请教诸位一个 mysql 导入的问题

2021-04-10 10:44:39 +08:00
 proxychains

现有一个以 : 分隔的 txt 文件,大概如下:

name:1/1/2011 12:00:00 AM:mail@mail.com:1/01/1991 ...

日期字段可能存在具体的值,也有可能为空.格式是 01/01/2011 09:00:01 AM

导入的时候 mysql load infile local 'file.txt' into table t_table.

因为设置了 ":" 为分隔符,所以到日期那就自动把 09:00:01 的时间分隔符当作字段分隔符把分钟,秒当作字段内容分配到字段上了 select * from table

name | 01/01/2011 09 | 00 | 01 AM | ...

这可如何是好,网上找了一圈没有头绪,所以来请教下大家 QAQ

1940 次点击
所在节点    MySQL
9 条回复
CEBBCAT
2021-04-10 12:25:42 +08:00
写个脚本二次处理一下吧,比如 Python
jotpot
2021-04-10 15:37:17 +08:00
先导入一张临时表,然后 insert select,把时间字段拼起来放入你的表里
keepeye
2021-04-10 16:57:52 +08:00
想不开么用冒号分隔,用逗号不行吗?或者每个字段用双引号包起来当 csv 处理
no1xsyzy
2021-04-10 18:25:51 +08:00
网上找当然没有用,因为这个问题不是技术问题。
就问你,**你**是怎么知道这里是个包含分、秒的日期的?
我看着日期字段格式就是 01/02/2006 03 啊?只写到时,这格式有什么问题吗?
xuanbg
2021-04-10 20:16:26 +08:00
先把 txt 文件里面的冒号统一替换成逗号,然后用正则把属于时间的冒号替换回来,再导入就不会有问题了。
proxychains
2021-04-10 20:23:58 +08:00
@no1xsyzy txt 日期格式是 01/01/2020 09:09:09 AM
你说的只写到时是导入后的字段
proxychains
2021-04-10 20:24:45 +08:00
@keepeye 没办法,拿到的就是这样
proxychains
2021-04-10 20:25:36 +08:00
@xuanbg 感谢提供思路,恶补一下正则去…
no1xsyzy
2021-04-12 10:01:01 +08:00
@proxychains 那我问你,我认为你把 txt 日期格式理解错了,不行吗?
把 “为什么不行、如何分辨分隔字段的冒号和日期格式中的冒号” 写出来就是你的程序

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX