【发布时间】:2012-05-20 13:49:14
【问题描述】:
我正在尝试使用 CSV 将 excel 文件导入我的 mysql 数据库。
数据库结构:
CREATE TABLE IF NOT EXISTS `sales_products` (
`productID` int(11) NOT NULL auto_increment,
`name` varchar(200) NOT NULL default '',
`categoryID` int(11) NOT NULL default '0',
`brandID` int(11) NOT NULL default '0',
`seriesID` int(11) NOT NULL,
`info` text NOT NULL,
`img` text NOT NULL,
`date_added` date NOT NULL default '0000-00-00',
`price` double NOT NULL default '0',
`special` varchar(200) NOT NULL,
PRIMARY KEY (`productID`),
FULLTEXT KEY `name` (`name`,`info`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='All products' AUTO_INCREMENT=21341 ;
CSV 的第一行:
Bottle opener (No.:015005);1;1;0;Blue, metallic;801001.gif;12-05-2012;0.95
我使用“使用 LOAD DATA 导入 CSV”,包含以下列:名称、类别 ID、品牌 ID、系列 ID、信息、img、添加日期、价格、特殊
它运行没有错误,但信息字段留空,信息放入“img”字段,img 放入 date_add 等。所以它跳过了信息字段。这是为什么呢?
【问题讨论】:
-
因为里面有逗号?您需要告诉 mysql 逗号不是字段分隔符,或者在将 excel 导出为 csv 时在字符串周围使用引号分隔符。例如“蓝色,金属”
-
导入的默认值有一个分号作为字段分隔符。为什么它会认为 a 是字段分隔符?此外,这会将“蓝色”放在 info 字段中,将“metallic”放在 img 字段中,所以这不会是问题所在。
-
不确定,但即使您指定了另一个分隔符,也将 , 视为分隔符是一个反复出现的主题。你试过引用吗?
-
用引号 (") 将所有主菜括起来就行了。不过对我来说仍然像是一个 PhpMyAdmin 错误。我使用这个 VB 脚本导出所有内容:markinns.com/articles/full/export_excel_csvs_with_double_quotes
-
这些年来,我看到不少“完全可配置”的 csv 导入实用程序并不完全像宣传的那样工作,因此出现错误也就不足为奇了。
标签: mysql csv phpmyadmin