关于使用load infile命令将巨大数据加载到表中

加载逗号分隔的txt文件到表中时出现问题。文件很大。它的大小为 2 GB ,包含 65列34 Lac 行。我没有按照以下设置加载这个文件:

  • Query-LOAD DATA LOCAL INFILE filename INTO TABLE tablename FIELDS TERMINATED BY','ENCLOSED BY'“'LINES TERMINATED BY'\ r \ n'IGNORE 1 LINES;

并在文件 my.ini 中添加了以下变量

  • [mysqld] max_allowed_pa​​cket = 60M
  • [myisamchk] key_buffer_size = 512M myisam_max_sort_file_size = 3G

我是mysql新手。任何人都可以帮我加载这个文件。当我运行上面的查询时,我得到了以下结果4-5次。

Query OK,0 rows affected(25.09 sec)
Records:0 Deleted:0 Skipped:0 Warnings:0
0
额外 编辑
意见: 1

4 答案

尽量不要使用LOCAL关键字, 如果这不能解决您的问题,请发布文本文件的一些第一行,以便我们可以查看是否所有行都因与参数中指定的模式不匹配而被忽略。

Update 1: Now I see you are using the '\r\n' terminator in

LINES TERMINATED BY '\r\n'

你有没有尝试修改这一行只使用'\ n':

LINES TERMINATED BY '\n'

Update 2: Try specify the table columns in LOAD DATA command;

LOAD DATA INFILE filename
INTO TABLE tablename
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'(
`tableColumn1` , `tableColumn2`, ..., `tableColumn65`
)

文件和表的列数可能不匹配,或者文件列的表格列的顺序不同。

1
额外
Jeferson Oliveira:当我从源文件复制10000-15000行到一个新的文本文件并使用上面的命令时,它会插入那些没有任何错误的值我的朋友。
额外 作者 Shrikant,
和yippe我也尝试过使用 LINES TERMINATED BY'\ n'
额外 作者 Shrikant,
您是否尝试过不使用LOCAL关键字?你使用哪个MySQL服务器版本? Windows或Linux服务器?你能告诉我们一个真正的“文件名”吗? Windows服务器上的某些文件名有问题。
额外 作者 jfoliveira,

使用外部ulil

mysqlimport --ignore-lines=1 --fields-optionally-enclosed-by="\"" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE tablename.txt
1
额外
我在解除mysqlimport表名后再次得到这个:记录:0删除:0跳过:0警告:0
额外 作者 Shrikant,
感谢追逐死亡和三氯生。这个问题是一个阻拦,请帮助我。
额外 作者 Shrikant,

我自己找到了我的问题的答案。

1.I 使用gslipts 软件分割我的文件,并对每个新创建的文件进行相应更改。

2.之后,我在Excel格式化文件 中正确打开了这些文件半小时,然后创建了每个拆分文件(由gslipts创建的文件)的数据命令。

0
额外

当你的INFILE很大时,必须调整max_allowed_pa​​cket以适应5.6的refman中每个链接的最大1G。 https://dev.mysql.com/ DOC/refman/5.6/EN /服务器系统variables.html#sysvar_max_allowed_pa​​cket  准备可以包括'session'SET local_infile = 1; SET LOAD DATA INFILE filename INTO TABLE tablename ..... max_allowed_pa​​cket = 1073741824(可能需要更多选项)..... 文件名可能需要完整路径即。 C:\文件夹\子文件夹\ myfilename.ext

警告将.ini/.cfg中的max_allowed_pa​​cket更改为1G可能会在您的日常操作中导致意外的内存压力。使用您的会话变量来覆盖此会话期间的1G要求。如果您没有1G的内存可用于此目的,则无论如何您都无法成功。

0
额外