2015-01-13 48 views
0

我想加载一个文本文件,它看起来像这样:Mysql的跳过行的LOAD DATA INFILE

11 aaa 
22 bbb 
# comment 
33 ccc 
44 bbb 
# comment 
55 eee 

我使用这个命令

LOAD DATA LOCAL INFILE '/d:\test.txt' 
INTO TABLE foo 
COLUMNS TERMINATED BY ' ' 
IGNORE 1 LINES 
(@'#') 

,我想跳过行的明星#

回答

0

我不认为忽略n行工作如你所料。 文件说

如果你想读的有你想要忽略一个共同的前缀的线,你可以才用开头的行会BY“prefix_string”来跳过前缀,任何东西。如果一行不包含前缀,则整行将被跳过。假设你执行以下语句:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test 
FIELDS TERMINATED BY ',' LINES STARTING BY 'xxx'; 

如果数据文件是这样的:

xxx"abc",1 
something xxx"def",2 
"ghi",3 

结果行会( “ABC”,1)和(“def”,2)。文件中的第三行被跳过,因为它不包含前缀。

IGNORE数字LINES选项可用于忽略文件开头处的行。例如,你可以使用IGNORE 1 LINES来跳过包含列名开始的标题行:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES; 

我觉得你最好的拍摄将在加载文件之前清除输入文本。