我该如何将CSV数据导入到MySQL中?

3
我有一个csv文件,结构如下:
    A   BA0011  U206    NAME    0000000000000149.00     000000.00  0000000000000118.93  S   N   N
    A   BB0011  U206    NAME    0000000000000150.00     000000.00  0000000000000118.93  S   N   N
    A   BC0011  U206    NAME    0000000000000151.00     000000.00  0000000000000118.93  S   N   N
    A   BD0011  U206    NAME    0000000000000152.00     000000.00  0000000000000118.93  S   N   N
    A   BE0011  U206    NAME    0000000000000153.00     000000.00  0000000000000118.93  S   N   N

使用以下MySQL函数,我该如何将MySQL表中的第一列和第三列导入:

LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
  FIELDS TERMINATED BY \t' ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 LINES;

抱歉我的英语不好!

提前感谢!


请查看CSV存储引擎http://dev.mysql.com/doc/refman/5.6/en/csv-storage-engine.html,以获得额外的乐趣。 - biziclop
2个回答

6

您可以指定列,并将不必要的列标记为“@dummy”。

LOAD DATA INFILE 'data.csv'
INTO TABLE t1
(column1, @dummy, column2, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
FIELDS TERMINATED BY '\t' ENCLOSED BY 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

根据您的需要替换t1column1column2。如果要设置数据文件中没有的其他列,可以像这样操作:

LOAD DATA INFILE 'data.csv'
INTO TABLE t1
(column1, @dummy, column2, @dummy, @val, @dummy, @dummy, @dummy, @dummy, @dummy)
FIELDS TERMINATED BY '\t' ENCLOSED BY 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
SET column3 = "test", column4 = CURRENT_TIMESTAMP, column5 = @val/10;

为了进一步参考,我建议你查看MySQL参考文档


如果您必须使用此代码,则表格必须包含文件中的所有字段。 - dido
@dilyan_kn 我添加了一个示例,其中定义了一些附加列。 - SecStone
数据文件 data.csv 应该放在哪里? - Bhavin Rana

0
也许您可以将其导入到具有所有列(以匹配CSV)的表中,然后选择插入到目标表中?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接