将逗号分隔的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_packet=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)
使用外部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 :(得分:1)
尝试不使用LOCAL关键字, 如果这不能解决您的问题,请发布文本文件的第一行,以便我们可以查看是否所有行都被忽略,因为它们与参数中指定的模式不匹配。
更新1: 现在我看到你正在使用
中的'\ r \ n'终止符LINES TERMINATED BY '\r\n'
您是否尝试修改此行以仅使用'\ n':
LINES TERMINATED BY '\n'
更新2: 尝试在LOAD DATA命令中指定表列;
LOAD DATA INFILE filename
INTO TABLE tablename
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'(
`tableColumn1` , `tableColumn2`, ..., `tableColumn65`
)
文件和表的列数可能不匹配,或者文件列与表列的顺序不同。
答案 2 :(得分:0)
我自己找到了问题的答案。
1.I 使用gslipts 软件拆分我的文件,并相应地对每个新创建的文件进行更改。
2.之后我正确地打开了这些文件格式正确半小时,然后创建了csv文件每个分割(由gslipts创建的文件)和已启动加载数据命令。
答案 3 :(得分:0)
当您的INFILE很大时,必须调整max_allowed_packet以在5.6的refman中为每个链接提供最大1G的容量。 https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_allowed_packet 准备工作可以包括“会议”。 SET local_infile = 1;在LOAD DATA INFILE filename INTO TABLE tablename之前设置max_allowed_packet = 1073741824(可能需要更多选项)..... 文件名可能需要完整路径即。 C:\文件夹\子文件夹\ myfilename.ext
警告将.ini / .cfg中的max_allowed_packet更改为1G可能会在日常操作中导致意外的内存压力。在此会话期间使用会话变量来满足此1G要求。如果您没有可用于此目的的1G内存,则无论如何都无法成功。