簡體   English   中英

LOAD數據文件中的文件未導入日期時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM