批量插入之前如何将.csv文件中的日期转换为SQL格式

|| 我有一个带有几千个游戏日期的csv文件,但它们都是MM / DD / YYYY格式
2/27/2011,3:05 PM,26,14
(26和14是团队ID#),并试图将它们放入SQL中,那样只会导致将0000-00-00放入我表的日期字段中。这是我尝试使用的命令:
LOAD DATA LOCAL INFILE \'c:/scheduletest.csv\' INTO TABLE game
FIELDS TERMINATED BY \',\'
ENCLOSED BY \'\"\'
LINES TERMINATED BY \'\\n\'
(`date`, `time`, `awayteam_id`, `hometeam_id`);
但同样,它不会正确地显示日期。有没有办法让它在尝试插入日期时转换日期?我发现了另一个与此类似的问题,但我无法使其正常工作。     
已邀请:
        您是否尝试过以下方法:
LOAD DATA LOCAL INFILE \'c:/scheduletest.csv\' INTO TABLE game
FIELDS TERMINATED BY \',\'
ENCLOSED BY \'\"\'
LINES TERMINATED BY \'\\n\'
(@DATE_STR, `time`, `awayteam_id`, `hometeam_id`)
SET `date` = STR_TO_DATE(@DATE_STR, \'%c/%e/%Y\');
有关更多信息,该文档提供了有关将用户变量与LOAD DATA一起使用的详细信息(大约中途-在页面中搜索\“ SET子句中的用户变量\”)     
        您可以在插入之前使用变量将csv中的数据加载到其中并在其上运行函数,例如:
LOAD DATA INFILE \'file.txt\'
INTO TABLE t1
(@datevar, @timevar, awayteam_id, hometeam_id)
SET date = STR_TO_DATE(@datevar, \'%m/%d/%Y\'),
SET time = etc etc etc;
    
        我的建议是将文件插入一个临时保存表中,其中date列是一个字符数据类型。然后使用“ 4”转换编写查询,以将数据从保存表移至最终目的地。     
         将您用于日期的字段转换为varchar类型,以便它将以任何格式友好播放 汇入CSV 将日期转换为有效的mysql日期格式,例如:     更新表SET字段= STR_TO_DATE(字段,\'%c /%e /%Y%H:%i \'); 然后将字段类型还原为日期     
        使用函数根据需要转换格式。 我不是MySQL方面的专家,但是http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date看起来很有希望。 如果不能直接在load命令中执行此操作,则可以尝试创建一个表,该表可以将所有值加载为
VARCHAR
,然后使用带有适当转换的select语句在
game
表中进行插入。     
        如果文件不是太大,则可以使用Excel函数TEXT。例如,如果您的日期在单元格A2中,则其旁边的临时列中的公式将为= TEXT(A2,\“ yyyy-mm-dd hh:mm:ss \”)。将执行此操作,然后可以将公式结果的值粘贴回该列中,然后删除临时列。     

要回复问题请先登录注册