将数据导入csv文件到mysql
问题描述:
我正在尝试将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';
您的帮助是非常感谢。
谢谢
答
如果我理解正确http://dev.mysql.com/doc/refman/5.1/de/load-data.html,你应该在声明的结尾通过
"SET id=NULL "
设置ID为空(这使得它的auto_increment)。否则,列数和列顺序必须完美匹配。
但是你的列根本不匹配(位置2的“2”是什么?)。因此,创建一个带有CSV结构的temp-Table,然后通过插入指定...选择匹配的列。
答
MySQL不是AI,也不知道16:48:27
应该进入time
字段 - 它会试图将其填充到id
而不是。
您需要在您的CSV文件中的列显式地映射到田间地头,他们应该进入该表:
LOAD DATA .... (time, domain_name, x, y, z, foo, bar)
我都还不知道的可能性,列出列名在其他的答案给出,只需要注意奇怪的第二列,如果它不在表中需要,然后把它放在一个变量,如 dummy1,如(时间,@ dummy1,domain_name,cpu_ns ...) –
flaschenpost
2013-05-08 22:19:40
你是对的ID ,以及关于列和模式的错误!非常感谢你! – Deano 2013-05-09 05:05:31