2013-05-08 227 views
1

我正在嘗試將csv文件導入到MYSQL,並且我有以下模式。將數據導入csv文件到mysql

CREATE TABLE `monitor` (
`id` bigint(20) NOT NULL AUTO_INCREMENT, 
`time` time DEFAULT NULL, 
`domain_name` text, 
`cpu_ns` int(11) DEFAULT NULL, 
`cpu_percentage` int(11) DEFAULT NULL, 
`mem_bytes` int(11) DEFAULT NULL, 
`mem_percentage` int(11) DEFAULT NULL, 
`block_rdby` int(11) DEFAULT NULL, 
`block_wrby` int(11) DEFAULT NULL, 
`net_rxby` int(11) DEFAULT NULL, 
`net_wrby` int(11) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

我遇到問題,導入文件的數據如下所示。

16:48:27,2,s-1-VM,220000000.,0.448204684384,262144,0,0,0,60,0 
16:48:30,2,s-1-VM,260000000.,0.528932926209,262144,0,0,16384,300,0 
16:48:33,2,s-1-VM,300000000.,0.609786677944,262144,0,0,0,180,0 
16:48:37,2,s-1-VM,290000000.,0.59000206364,262144,0,0,16384,120,0 
16:48:40,2,s-1-VM,270000000.,0.54985661784,262144,0,0,0,649,425 
16:48:43,2,s-1-VM,310000000.,0.631207212346,262144,0,0,0,180,0 
16:48:46,2,s-1-VM,220000000.,0.44728232907,262144,0,0,20480,60,0 
16:48:49,2,s-1-VM,200000000.,0.407008216196,262144,0,0,0,300,0 
16:48:52,2,s-1-VM,250000000.,0.508946559213,262144,0,0,0,240,0 
16:48:55,2,s-1-VM,240000000.,0.488674160215,262144,0,0,0,120,0 

如何導入到我的數據庫?

我試過以下,我收到很多警告。

LOAD DATA LOCAL INFILE '/tmp/domain2.csv' INTO TABLE vtop FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 

您的幫助是非常感謝。

謝謝

回答

3

如果我理解正確http://dev.mysql.com/doc/refman/5.1/de/load-data.html,你應該在聲明的結尾通過

"SET id=NULL " 

設置ID爲空(這使得它的auto_increment)。否則,列數和列順序必須完美匹配。

但是你的列根本不匹配(位置2的「2」是什麼?)。因此,創建一個帶有CSV結構的temp-Table,然後通過插入指定...選擇匹配的列。

+0

我都還不知道的可能性,列出列名在其他的答案給出,只需要注意奇怪的第二列,如果它不在表中需要,然後把它放在一個變量,如 dummy1,如(時間,@ dummy1,domain_name,cpu_ns ...) – flaschenpost 2013-05-08 22:19:40

+0

你是對的ID ,以及關於列和模式的錯誤!非常感謝你! – Deano 2013-05-09 05:05:31

0

MySQL不是AI,也不知道16:48:27應該進入time字段 - 它會試圖將其填充到id而不是。

您需要在您的CSV文件中的列顯式地映射到田間地頭,他們應該進入該表:

LOAD DATA .... (time, domain_name, x, y, z, foo, bar)