【发布时间】:2014-04-28 21:37:05
【问题描述】:
我正在使用 BASH 脚本将 LOAD DATA INFILE 运行到 MySQL。我的问题是试图正确终止一条线路。运行我的脚本后,我注意到每隔一行都被跳过了。以下是一些示例数据:
CSV 文件读取:
"COMP","POL","STATUS","TYPE","CODE","MODE","NUMBER"
"220","1243918,"TGI","NA","AS-T5","M6","793930""
"220","1653912,"TGS","NA","NON","M6","793975""
"220","1471618,"TGS","NA","AS-T6","M6","793915""
这是我导入 CSV 文件的 BASH 脚本:
mysql -u$User -p$Pass -D$Db<<EOFMYSQL
LOAD DATA INFILE '$InputFile' INTO TABLE $Table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(comp,pol,status,type,code,mode,number);
EOFMYSQL
但这是我的行在我的数据库中的样子:
220 1243918 TGI NA AS-T5 M6 793930""220
220 1471618 TGS NA AS-T6 M6 793915""220
请注意,数据库中的最后一个字段 NUMBER 有两组引号和 CSV 文件中下一行的第一个字段。跳过第二行。
我尝试了许多不同的 LINES TERMINATED BY 选项,但就是不知道如何正确指定换行符?!
任何建议将不胜感激!
巴舍尔
【问题讨论】:
-
我必须添加这是一个 Windows CSV 文件,如果我删除 ENCLOSED BY '"',我的行是正确的,但数据库中的每个值都有引号......