MySQL在文件中加载数据忽略标签

时间:2016-10-25 00:14:43

标签: mysql

我有一个20GB的文件,里面有点数据。数据未正确导出,并且整个标签空间。我的意思是文件就像这样

POINT(  -38.071489872015        140.99467884981 ),
POINT(  -38.071489872015        140.99525003481 ),
POINT(  -38.071489872015        140.99582121982 ),
POINT(  -38.071100465759        140.99147345891 ),
POINT(  -38.071100465759        140.99204464087 ),

有没有办法忽略第一个和最后一个标签空间?

我当前的加载数据脚本是

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/import.txt' 
INTO TABLE tblImport 
LINES TERMINATED BY ',' 
(@pointData) 
SET 
pointData = GeomFromText(@pointData);

但我收到了错误

[Err] 3037 - Invalid GIS data provided to function st_geometryfromtext.

由于

1 个答案:

答案 0 :(得分:0)

sed是一种非常有效的操作文本数据的工具。您可能还希望保存已清理的数据集以防导入失败,而不是清除它并将其传送到mysql,您也可以这样做。

尝试

sed $'s/\t*//g' point_data.sql | head -n 20 > point_data_no_tabs_short.sql

清理20行,确保达到预期效果。

如果有效,请就地清理整个文件:

sed -i.bak $'s/\t*//g' point_data.sql

或创建一个已清理的副本:

sed $'s/\t*//g' point_data.sql > point_data_no_tabs.sql