[英]LOAD data infile not importing datetime
我有看起来像的csv文件:
0,00018332,2016-08-29 00:00:00,2016-08-29 00:00:00,9999,仅零件销售,0,DMS Maritime Pty Ltd,xyz ,, 00000250,1971-01-01 00:00:00,1971-01-01 00:00:00,218335,仅限零件销售9999
然后我有php脚本将这个csv导入表中
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "test.csv";
$dbtable = "res";
$affectedRows = $pdo->exec("
LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$dbtable`
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
LINES TERMINATED BY ".$pdo->quote($lineseparator));
但是当我在数据库表中重新检查时,值2016-08-29 00:00:00(列是日期时间)是0000-00-00 00:00:00,将218335和9999设置为0事件列设置为int(11)。其他所有东西都写正确了。 我尝试了csv和txt,但我遇到了同样的问题。
你知道为什么吗?
编辑:
CREATE TABLE `res` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text,
`start` datetime DEFAULT NULL,
`end` datetime DEFAULT NULL,
`room_id` int(11) DEFAULT NULL,
`status` varchar(30) DEFAULT NULL,
`paid` int(11) DEFAULT NULL,
`customer` varchar(50) DEFAULT NULL,
`name_ship` varchar(50) DEFAULT NULL,
`equipment` text,
`port` varchar(30) DEFAULT NULL,
`ETA` datetime DEFAULT NULL,
`ETD` datetime DEFAULT NULL,
`service_id` int(11) NOT NULL,
`service_classification` varchar(30) DEFAULT NULL,
`partners_id` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5392 DEFAULT CHARSET=latin1
您的文件使用utf16编码,mysql不会自行检查。 要么在数据源中进行更改(因为表编码表明您始终不希望使用utf16字符串),要么将文件的编码通知mysql。
对于您的文件,以下应该起作用:
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE res
CHARACTER SET utf16le
FIELDS TERMINATED BY ';\0'
LINES TERMINATED BY '\r\0\n\0';
它设置文件的字符集并以unicode定义定界符。 您也可以只使用'\\n\\0'
。
为什么不执行:在mysql cmd中显示警告并查看确切的错误是什么。
https://dev.mysql.com/doc/refman/5.5/zh-CN/show-warnings.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.