以下查询完美导入 100,000,但更大的文件没有任何反应。没有错误,没有加载行。
您可以提供任何线索表示赞赏。我花了几个小时研究最大文件和内存限制并需要帮助。谢谢!
LOAD DATA LOCAL INFILE 'C:\\temp\\masterplay\\bigone.csv'
INTO TABLE mytable
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(`MARK`,`SERIAL NUMBER`, ...thirty some columns...)
0 rows inserted. (Query took 2.2385 sec)
Run Code Online (Sandbox Code Playgroud)
以上在 100,000 条记录上表现完美且快速,对 350,000 条记录没有任何作用。当 CSV 分解为 100,000 多条记录时,导入工作正常。
示例 CSV 文件大小为 314,946 条记录。每行平均 551 个字符。最大行长度为 575。版本:MYSQL 5.6.17、PHP 5.5.12 WAMPSERVER 2.5、Windows 10 Pro 16 GB RAM。无法确定故障模式,因此没有参考文件中的截止。
根据下面的建议,在其他版本和 Linux 上尝试了相同的 SQL,同样的问题。
更新:
下面的想法让我专注于源 CSV 文件。到目前为止,我发现重新保存 CSV(即使它使用 CSV 应用程序检查良好并且在名称和内容上看起来相同)以某种方式修复了文件,以便导入。我有数百个大文件要处理,但不明白有什么区别。
文件以逗号分隔,没有文本分隔符。重新保存文件后,它的内容似乎仍然相同,但文件大小大约增加了 300K。CSV 文件类型是否具有不同的标题或元数据?
使用十六进制编辑器检查文件并显示答案。
我的 CSV 的不同之处在于,行终止于:
十六进制 0D 回车符 (\r),或
十六进制 0D 回车符 (\r) 和 0A 换行符 (\n)
这是代码行:
LINES TERMINATED BY '\r\n'
Run Code Online (Sandbox Code Playgroud)
或者
LINES TERMINATED BY '\r'
Run Code Online (Sandbox Code Playgroud)
就我而言,取出\n
CSV 就可以完美导入。
如果此行与 CSV 不匹配,您将得到静默处理。SQL 导入将正常运行,但不会导入任何行。
归档时间: |
|
查看次数: |
13642 次 |
最近记录: |