如何将以空格分隔的文本文件导入MySQL?
时间:2020-03-06 14:57:52 来源:igfitidea点击:
我需要将较大的(24MB)文本文件导入MySQL表。每行看起来像这样:
1 1 0.008 0 0 0 0 0
每个字段后都有一个或者多个空格,最后一个字段在换行符之前尾随约36个空格。
如何将这样的文件导入MySQL?从文档看来,LOAD DATA期望所有字段都由完全相同的字符串终止。我试过了
LOAD DATA INFILE 'filename' INTO TABLE mytable FIELDS TERMINATED BY ' ';
但是MySQL会将一个以上空格的序列解释为界定一个空字段。
有任何想法吗?
解决方案
如果我们使用的是Unix / Linux,则可以通过sed进行设置。
打开一个终端并输入:
sed 's/ \+/ /g' thefile > thefile.new
这会将多个空格的所有序列替换为一个空格。
我们也可以使用Jauco发布的相同命令将定界符更改为';'。或者\ n。
那也有帮助。
没有办法可以务实地做到这一点吗?一个简单的PHP脚本将能够立即加载文件,按空格分割并立即进行插入:
<?php $db = mysql_connect('host', 'user', 'password') or die('Failed to connect'); mysql_select_db('database', $db); $fileHandle= @fopen("import.file", "r"); if ($fileHandle) { while (!feof($fileHandle)) { $rawLine = fgets($fileHandle, 4096); $columns = preg_split("/\s+/", $rawLine); //Construct and run an INSERT statement here ... } fclose($fileHandle); } ?>
编辑
话虽如此,贾卡勒的建议却整洁了;)