【问题标题】:Mysql Skip rows in LOAD DATA INFILEMysql 在 LOAD DATA INFILE 中跳过行
【发布时间】:2015-03-11 18:01:42
【问题描述】:

我想加载一个如下所示的文本文件:

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
(@'#')

我想用#跳过行的星号

【问题讨论】:

    标签: mysql load load-data-infile


    【解决方案1】:

    我认为忽略 n 行不会像您预期的那样工作。 文档说

    如果你想读入的所有行都有一个你想忽略的公共前缀,你可以使用 LINES STARTING 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 number LINES 选项可用于忽略文件开头的行。例如,您可以使用 IGNORE 1 LINES 跳过包含列名的初始标题行:

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

    我认为您最好的方法是在加载文件之前清除输入文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2010-11-17
      • 1970-01-01
      • 2017-07-21
      • 2012-06-01
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多