gpt4 book ai didi

MySQL CSV 导入 - 输入的日期为 0000-00-00 00 :00:00 if timestamp has milliseconds?

转载 作者:可可西里 更新时间:2023-11-01 08:37:25 30 4
gpt4 key购买 nike

我目前有大量 CSV 文件要导入到 MySQL 数据库中。这些文件包含每条记录的时间戳,格式如下(例如):

2011-10-13 09:36:02.297000000

我知道 MySQL 错误 #8523,它表明不支持在日期时间字段中存储毫秒数。尽管如此,我还是希望日期时间字段在秒后截断记录,而不是输入为空白。

我已经将问题缩小到毫秒(而不是 csv 等的格式),因为

2011-10-13 09:36:02

正确导入。

任何人都可以建议一种方法,让我可以在没有零的情况下导入这些数据吗?我有太多的 CSV,无法手动进入每一个并调整时间戳的长度/格式。

我应该指出,虽然毫秒是一个很好的选择,但它们对我的应用程序来说并不是必需的,所以我很高兴有一个允许我轻松截断数字并导入它们的解决方案。

谢谢!

编辑:为了澄清,我正在使用以下命令导入 CSV:

mysqlimport --fields-enclosed-by="" --fields-terminated-by="," --lines-terminated-by="\n" --columns=id,@x,Pair,Time -p --local gain [file].csv

这对于导入记录来说非常快 - 我有大约 50m 的内容要导入,因此读取每一行并不是一个好的选择。

最佳答案

我不知道你如何导入 CSV,但我会做的方法是编写一个脚本 (php/perl) 来读取每个文件,将时间戳四舍五入或修剪为秒,然后在文件上执行 INSERT 语句数据库。

有点像

<?php
$file=fopen("your.csv","r");
mysql_connect ($ip, $user, $pass);

while(!feof($file))
{
$line = explode(',',fgets($file));
mysql_query("INSERT INTO TABLE1 (ID, DATE) values (".$line[0].", ".substr($line[1],0,19).")");
}
fclose($file);
?>

从命令行执行它,它应该完成工作

关于MySQL CSV 导入 - 输入的日期为 0000-00-00 00 :00:00 if timestamp has milliseconds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904175/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com