代码之家  ›  专栏  ›  技术社区  ›  Abderrahmane TAHRI JOUTI Anniepoo

mysql load data local infile在第一行被“

  •  1
  • Abderrahmane TAHRI JOUTI Anniepoo  · 技术社区  · 8 年前

    下面的mysql查询什么也不做

    LOAD DATA
    LOCAL INFILE 'path/to/file.csv'
    REPLACE INTO
    TABLE `db`.`table`
    COLUMNS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (
        `id`,
        `name`
    );
    

    csv文件如下:

    "id","name"
    "1","Lorem"
    "2","Ipsum"
    "3","Dolor"
    "4","Sit"
    "5","Amet"
    "6","consectetur "
    "7","adipisci"
    "8","velit"
    "9","sed"
    "10","quia"
    

    我检查了行分隔符lf,文件编码是utf-8。

    我注意到,如果清空csv的第一行,或者删除第一行的双引号,查询实际上会影响10行。

    你知道为什么会这样吗?因为我宁愿我不必编辑第一行。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Red Boy    8 年前

    问题是你的 Escaped By '"' ,作为第一个引用(“)遇到,它被认为是 Escape . 把它扔掉就行了。

    LOAD DATA
    LOCAL INFILE 'path\\to\\file.csv'
    REPLACE INTO
    TABLE `db`.`table`
    COLUMNS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (
        `id`,
        `name`
    );