Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加载数据填充而不导入日期时间_Php_Mysql_Datetime - Fatal编程技术网

Php 加载数据填充而不导入日期时间

Php 加载数据填充而不导入日期时间,php,mysql,datetime,Php,Mysql,Datetime,我有一个csv文件,看起来: 0000183322016-08-29 00:00:002016-08-29 00:00:009999,仅销售零件,0,DMS海事私人有限公司,xyz,000002501971-01-01 00:00:001971-01-01 00:00:00218335,仅销售零件,9999 然后我有一个php脚本,它将这个csv导入到表中 $fieldseparator = ","; $lineseparator = "\n"; $csvfile = "test.csv";

我有一个csv文件,看起来:

0000183322016-08-29 00:00:002016-08-29 00:00:009999,仅销售零件,0,DMS海事私人有限公司,xyz,000002501971-01-01 00:00:001971-01-01 00:00:00218335,仅销售零件,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)); 
但当我在db表中检查时,值2016-08-29 00:00:00(列为datetime)为0000-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

为什么不执行:在mysql cmd中显示警告并查看确切的错误。

为什么不执行:在mysql cmd中显示警告,并查看确切的错误。

您的文件是用utf16编码的,mysql不会自行检查。要么在数据源中更改它(因为表编码表明您无论如何都不想使用utf16字符串),要么通知mysql文件的编码

对于您的文件,以下操作应该有效:

将数据本地填充“test.csv”加载到表res中
字符集utf16le
以''结尾的字段\0'
以“\r\0\n\0”结尾的行;

它设置文件的字符集并用unicode定义分隔符。您也可以使用
'\n\0'

您的文件是用utf16编码的,mysql不会自行检查。要么在数据源中更改它(因为表编码表明您无论如何都不想使用utf16字符串),要么通知mysql文件的编码

对于您的文件,以下操作应该有效:

将数据本地填充“test.csv”加载到表res中
字符集utf16le
以''结尾的字段\0'
以“\r\0\n\0”结尾的行;

它设置文件的字符集并用unicode定义分隔符。您也可以使用
'\n\0'

显示表的外观(创建表语句)。主键(
id
))引擎=InnoDB自动增量=5392默认字符集=Latin1注释中难以读取的内容,请将其编辑到问题中。显示表的外观(创建表语句)主键(
id
))ENGINE=InnoDB AUTO_INCREMENT=5392 DEFAULT CHARSET=LATIN1注释中难以读取的内容,请将其编辑到问题中。尝试以下操作:将数据本地填充“test.csv”加载到以“,”结尾的表res字段中,行以“\n”(id、姓名、开始、结束、房间id、状态、付款、客户、姓名、船名、设备、港口、ETA、ETD、服务id、服务id、服务分类、合作伙伴id)您能给我发送您的csv文件吗?我用您的示例测试过,效果很好,我也不知道。但它不仅适用于日期时间(开始、结束、ETA、ETD),甚至适用于服务id和合作伙伴id(int(10))尝试以下操作:将数据本地填充“test.csv”加载到以“,”结尾的表res字段中,行以“\n”结尾(id、名称、开始、结束、房间id、状态、已付款、客户、船名、设备、端口、ETA、ETD、服务id、服务分类、合作伙伴id)你能把你的csv文件发给我吗?我用你的例子测试过,效果很好,我也不知道。但它不仅适用于datetime(开始、结束、ETA、ETD),甚至还适用于service_id和partners_id(即int(10))。谢谢,这很有效!所以总是添加字符集谢谢,这很有效!所以总是添加字符集