2012-03-04 33 views
3

我csv文件具有以下結構:如何將數據從CSV導入到MySQL?

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; 

我爲我的英語道歉!

在此先感謝!

+0

請參閱CSV存儲引擎http://dev.mysql.com/doc/refman/5.6/en/csv-storage-engine.html以獲得更多樂趣。 – biziclop 2012-03-04 13:54:58

回答

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 reference

+0

如果您必須使用此代碼,則該表必須包含文件中的所有字段。 – dido 2012-03-04 14:08:35

+0

@dilyan_kn我添加了一個定義一些額外的列的例子。 – SecStone 2012-03-04 14:23:59

+0

哪裏shd是data.csv放? – 2013-06-09 13:51:40

0

也許你可以將它導入一個包含所有列的表格(以匹配CSV),然後選擇 - 插入到目標表中?