【问题标题】:MySQL DB with 3,000+ records that need to be converted具有 3,000 多条需要转换的记录的 MySQL 数据库
【发布时间】:2012-10-10 14:52:20
【问题描述】:

我有一个数据库,它是通过 phpmyadmin 对 Excel 文件的初始转储。因此,没有对表格应用格式或其他逻辑。所以我基本上只剩下一个“varchar”样式行的表。其中包括日期和时间等。

示例: start_time、end_time、start_date、end_date .. 看起来像 7:30 PM、11:00PM、9/9/12、11/22/12,然后是一些正常的行。不幸的是,我无法将整个表格转换为更好的格式,因为有人基于这种糟糕的所谓表格设计的很多功能。唯一真正适合它的是,该表对于我可以与某物关联的每一行都有一个自动递增的 ID。因此,我认为这是修补事物的一种手段,而我们修复了许多将事物分开的功能,而我可以在其他所有事物上搭建桥梁。

为数据类型创建一个可以包含适当类型行的表,然后能够使用一些 mysql 功能,例如 BETWEEN(),例如在 start_date 上获取 a - z 列表,但列表有限。

所以我想弄清楚有没有一种方法可以将数据从一个表转储到下一个表,但在此查询的过程中让它转换为我想要的类型,例如日期时间,将 start_date 和 start_time 组合成日期时间格式以及结束时间/日期?

或者这是我必须在堆中拉出的东西,用 PHP 循环并让它在新表中插入新行?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我会使用 PHP 脚本来读取原始数据,然后将其处理为正确的日期格式,然后插入到新表中。

    所以场景是,你有一个时间和日期分开,你想组合它们,然后将它们格式化为数据库可接受的日期格式。我会这样做:

    date_default_timezone_set('America/Los_Angeles');
    
    // you have separate dates and times like this
    $date = '9/9/12';
    $time = '11:00 PM';
    
    // combine them into one string
    $str = $date . ' ' . $time;
    
    $dt = DateTime::createFromFormat('n/j/y g:i A', $str);
    
    $DBFormat = $dt->format('Y-m-d H:i:s');
    
    echo $DBFormat;
    // outputs DB date format -> 2012-09-09 23:00:00
    

    我注意到你的第一个例子是7:30 PM,下一个例子是11:00PM。在后一个示例中,PM 之前没有空格。我不知道这是否是您的拼写错误,或者您的数据是否确实如此变化,如果确实如此,那么我会添加一个检查并插入空格。

    【讨论】:

    • 是的,这就是我的想法,我希望我可以通过某种查询直接完成它。但是我已经设置了新表和其他所有内容,所以猜想编写脚本来完成它并不痛苦。我目前唯一的问题是我不知道列出的时间时间戳的来源是什么,因为它们是东部,太平洋,中部,山区,其他......我想我必须找出来。谢谢
    • @chris 我会选择 PHP 脚本来处理数据,而不是大型查询/存储过程,因为我认为如果需要调试和添加复杂逻辑会更容易。
    【解决方案2】:

    为此,您可以按照以下步骤操作:

    1. 在同一数据库中创建一个新表,其中包含源表中的所有字段(要复制的表)。

    2. 创建一个 PHP 文件。

    3. 编写一个 MYSQL 查询来选择源表中的所有值。

    4. 在 while 循环中,编写一个查询以将这些行插入到新表中。

    5. 在此之前,使用 php 中的“strtotime() 和 date()”函数将 start_time、end_time、start_date、end_date 列的值转换为所需的格式。

    6. 在新表中插入新值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2014-04-22
      • 2020-09-22
      • 2012-03-31
      相关资源
      最近更新 更多