proxychains
V2EX  ›  MySQL

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

By proxychains at 2021 年 4 月 10 日 · 2987 次点击

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

name:1/1/2011 12:00:00 AM:[email protected]: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

9 条回复  •  2021-04-12 10:01:01 +08:00
CEBBCAT
   1
CEBBCAT  
   2021 年 4 月 10 日 via Android
写个脚本二次处理一下吧,比如 Python
jotpot
   2
jotpot  
   2021 年 4 月 10 日 via iPhone   ❤️ 1
先导入一张临时表,然后 insert select,把时间字段拼起来放入你的表里
keepeye
   3
keepeye  
   2021 年 4 月 10 日
想不开么用冒号分隔,用逗号不行吗?或者每个字段用双引号包起来当 csv 处理
no1xsyzy
   4
no1xsyzy  
   2021 年 4 月 10 日
网上找当然没有用,因为这个问题不是技术问题。
就问你,**你**是怎么知道这里是个包含分、秒的日期的?
我看着日期字段格式就是 01/02/2006 03 啊?只写到时,这格式有什么问题吗?
xuanbg
   5
xuanbg  
   2021 年 4 月 10 日   ❤️ 1
先把 txt 文件里面的冒号统一替换成逗号,然后用正则把属于时间的冒号替换回来,再导入就不会有问题了。
proxychains
   6
proxychains  
OP
   2021 年 4 月 10 日 via Android
@no1xsyzy txt 日期格式是 01/01/2020 09:09:09 AM
你说的只写到时是导入后的字段
proxychains
   7
proxychains  
OP
   2021 年 4 月 10 日 via Android
@keepeye 没办法,拿到的就是这样
proxychains
   8
proxychains  
OP
   2021 年 4 月 10 日 via Android
@xuanbg 感谢提供思路,恶补一下正则去…
no1xsyzy
   9
no1xsyzy  
   2021 年 4 月 12 日
@proxychains 那我问你,我认为你把 txt 日期格式理解错了,不行吗?
把 “为什么不行、如何分辨分隔字段的冒号和日期格式中的冒号” 写出来就是你的程序
› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
© 2026 V2EX · 55ms · 3.9.8.5