免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3631 | 回复: 4
打印 上一主题 下一主题

请问load data infile 多条提交的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-09 03:12 |只看该作者 |倒序浏览
我有一个1千万数据的文件;需要提交到一个表中;请问load data infile 如何实现每插入1万条提交一次?谢谢!!

论坛徽章:
0
2 [报告]
发表于 2010-12-09 15:49 |只看该作者
实际上我就是想用最快的方法导入数据,请问mysql最快的方法是什么.

我大概有1千万数据在一个文件中;其中大概几千条是错误的格式,请问最快最好的方法是什么了?
谢谢!!

我的表结构如下:
create table card (
    sequence          bigint,
    accountpinnumber  bigint,
    facevalue         integer,
    msisdn             varchar(15),
    tradetime         char(14),
    tradetype         integer,
    primary key ( sequence )
) max_rows=10000000000
  min_rows=10000000
partition by list (mod(sequence,10)) (
    partition p0 values in (0),
    partition p1 values in (1),
    partition p2 values in (2),
    partition p3 values in (3),
    partition p4 values in (4),
    partition p5 values in (5),
    partition p6 values in (6),
    partition p7 values in (7),
    partition p8 values in (,
    partition p9 values in (9)
);

论坛徽章:
0
3 [报告]
发表于 2010-12-09 16:18 |只看该作者
本帖最后由 todayhero 于 2010-12-09 16:23 编辑

关于你的问题!先了解一下.你的存储类型.

1\
myisam表,建议
alter table tb_name DISABLE KEYS
导入数据.再
alter table tb_name ENABLE KEYS

INNODB表.
关闭自动提交.
关键检测唯一性.会提高数据.


2\如此多条记录.建议使用split命令.将你的数据文件,多切几份吧!然后再循环导入.第导入一次的时间都要注意第1步的建议.

3\关于数据文件中的错误.可以使用mysqlimport中的force加强导入吧!load data有无强制导入目前不知.

希望对你有所帮助.

论坛徽章:
0
4 [报告]
发表于 2010-12-09 19:29 |只看该作者
谢谢; 我按你的方法split -l 10000 来处理了,还是挺慢的. 不过有一个问题.
如果文件中的数据不合法;为什么--force不生效;继续执行导入了?

文件中第3行accountpinnumber中含有一个A;不是bigint型的.但是我执行的
mysqlimport -uin -pomc   --fields-terminated-by="|" -f -r -v cards d:/temp/card/card.1.unl

mysql5.1 在 windows下; 谢谢!!
如下语句;直接退出了, 请看下面的日志.

    accountpinnumber  bigint,

card.1.unl
03402400278|3006074527611|3000|7701300044|20080717173558|1|
03402605381|2008210038651|2000|7705814636|20080722164259|1|
03402405946|300A569623453|3000|7701318513|20051018141148|1|
04101510870|7002529330516|1000|7701447667|20080725164238|1|
04405207604|3005346344406|1000|7702988988|20080902191209|1|


Connecting to localhost
Selecting database cards
Loading data from SERVER file: d:/temp/card/card.1.unl into card
mysqlimport: Error: 1265, Data truncated for column 'accountpinnumber' at row 3,
when using table: card
Disconnecting from localhost

论坛徽章:
0
5 [报告]
发表于 2010-12-10 10:11 |只看该作者
你既然知道有不法格式,找出不法格式,然后删除去.
使用sed命令.

可是将不法格式修改为合法格式.变通方法想想了.


执行慢,原因比较好,先别管慢了.先导进去再说了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP