[英]how to skip lines of a csv file while using LOAD DATA command?
我正在使用sql命令加载数据以将csv文件中的数据插入mysql数据库。 问题在于文件的末尾有几行,例如“ 、、、、、、、、、、、、、、、、、、(csv文件是excel文件的转换)。 因此,当sql到达这些行时,他向我发送了#1366-错误的整数值:行661的“ Bug_ID”列。“ bug_id”是一个int,我有32列。
考虑到提交的行数是可变的,我如何告诉他忽略那些行?
谢谢你的帮助。
当读取带分隔符的文本文件时,MySQL支持'LINES STARTING BY“ xxxx”'。 如果可以,要求您的特定.CVS文件的每条数据行都带有“前缀”,而非数据行则不具有该前缀。 这使您可以根据需要将注释放入.CSV中。
MySQL Doc:在文件中加载数据
您可以:
第1步-(可选)导出数据:
SELECT *
INTO OUTFILE "myFile.csv"
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES STARTING BY 'DATA:'
TERMINATED BY '\n'
FROM table
第2步-导入数据
LOAD DATA INFILE "myFile.csv"
INTO TABLE some_table
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES STARTING BY 'DATA:'
有效地,您可以将.csv文件修改为如下所示:
# Comment for humans
// Comment for humans
Comments for us humans.
DATA:1,3,4,5,6,'asdf','abcd'
DATA:4,5,6,7,8,'qwerty','zxcv'
DATA:9,8,7,6,5,'yuio','hjlk'
# Comments for humans
// Comments for humans
Comments for humans
DATA:13,15,64,78,54,'bla bla','foo bar'
构造仅解释/读取前缀为“ DATA:”的行。
我使用这种技术为需要外部控制信息的SQL脚本创建了一个“配置”文件。 但是,有一个人为因素需要能够轻松操纵.csv文件并理解其内容。
-乔根森(J Jorgenson)-
我修复了它:我刚刚在我的csv解析器中的行上添加了一个条件
while((line = is.readLine())!= null){
if (!line.equals(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"))
{
Iterator e = csv.parse(line).iterator();
......
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.