wosy_fox 2022-12-18 16:40 采纳率: 60%
浏览 14
已结题

关于#mysql#的问题:大批量转换字段类型

一张大概2亿条模拟数据的数据表,其中有个字段是日期数据,格式是“年-月-日 时:分:秒:毫秒 ”,但字段类型是varchar,现在需要把这个字段转换成datetime类型,同时数据只需要保留"年-月-日 时:分:秒",不要后面的毫秒数。

img

img

使用update语句和存储过程分别进行尝试,如果数据量小的话都能很好实现,但数据量比较大,这些方法效率比较低。另外对存储过程也不是太精通。请伙伴们答疑解惑

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-18 16:44
    关注

    ChatGPT尝试为您解答,仅供参考
    在转换大量数据时,使用 UPDATE 语句或存储过程可能会很慢。 如果您正在使用 MySQL 数据库,则可以使用 "LOAD DATA INFILE" 语句加载数据文件并在导入过程中进行转换。


    首先,您需要使用 SELECT 语句导出需要转换的数据到一个文本文件中。 然后,您可以使用 "LOAD DATA INFILE" 语句加载这个文件并指定字段的类型,并使用 "STR_TO_DATE" 函数将 varchar 类型的日期字段转换为 datetime 类型。 下面是示例代码:

    LOAD DATA INFILE 'data.txt' INTO TABLE mytable
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    (date_field, other_fields...)
    SET date_field = STR_TO_DATE(date_field, '%Y-%m-%d %H:%i:%s');
    

    "LOAD DATA INFILE" 语句非常快,因为它使用了本地文件系统,而不是通过数据库服务器来加载数据。 它还可以并行加载多个文件,从而进一步提高效率。


    需要注意的是,使用 "LOAD DATA INFILE" 语句时,数据表必须已经存在,并且您必须有权限对其进行写入。 另外,这种方法只能用于导入文本文件,如果您的数据来自其他数据库或数据源,则可能需要使用其他方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)