【问题标题】:Import CSV into MySQL - Offset by 1 Column将 CSV 导入 MySQL - 偏移 1 列
【发布时间】:2014-09-05 17:44:15
【问题描述】:

我正在从csv 文件中导入我的数据,如下所示:

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

这几乎完美无缺。我的表有一个不同的行,第一行:一个自动递增的id 列。否则csv 文件和MySQL 表完美匹配。当我运行上面的命令时,它将csv 的第一列放入id 字段。它希望它真正进入第二个。

有没有办法可以修改上述语句以指定列或仅将其偏移 1? (跳过导入的第一列)。

【问题讨论】:

  • 您是否尝试过先将其加载到临时表中,然后在最终表中使用选择?所以你可以指定你想要的列。
  • @vinibarr 不,我没有。我想先看看这是否可以在一个命令中实现。
  • 我知道您可以忽略源文件中的列,但我认为不可能忽略命运表中的列。

标签: mysql sql csv import


【解决方案1】:

您可以选择将要由 LOAD DATA 填充的列命名,并简单地省略您的 id 列:

LOAD DATA LOCAL INFILE "c:\myfile.csv" INTO TABLE historic 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' 
(column2, colum3, column4, column5, ...)

【讨论】:

    【解决方案2】:

    您可以将指定要使用的订单列的数据加载到表中: LOAD DATA LOCAL FILE '/tmp/test.txt' INTO TABLE 历史 (name_field1, name_field2, name_field3...);

    或者,如果您愿意,可以先将其加载到临时表中,然后使用 select into 语句将其加载到最终表中(速度较慢)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 2017-02-04
      相关资源
      最近更新 更多