0

我查看了有关 STR_TO_DATE() 的其他问题,他们的解决方案不适用于我的情况。我也阅读并在其他地方搜索无济于事。

我正在导入以下 XML 的许多行:

<Game>
  <id>21</id> 
  <GameTitle>Final Fantasy XIII</GameTitle> 
  <ReleaseDate>03/09/2010</ReleaseDate> 
</Game>

<Game>
  <id>31</id> 
  <GameTitle>Heavenly Sword</GameTitle> 
  <ReleaseDate>09/12/2007</ReleaseDate> 
</Game>

使用以下 SQL 语句:

USE test;
LOAD XML LOCAL INFILE 'C:\\xampp\\mysql\\data\\test.xml'
REPLACE
INTO TABLE games
ROWS IDENTIFIED BY '<Game>'
SET ReleaseDate = STR_TO_DATE(@ReleaseDate, '%c/%e/%Y');

GameTitle 和 ID 正在完美导入。我尝试使用 %m 和 %d 并确保 ReleaseDate 列是 DATE 数据类型。所有行都在 ReleaseDate 列中写入 NULL。

MySql 正在返回

2466 row(s) affected, 64 warning(s): 1265 Data truncated for column 'ReleaseDate' 
at row 1 1265

预先感谢您的帮助。StackOverflow 已经解决了我真正遇到过的每一个问题,甚至不用问。

4

1 回答 1

2

您需要为与 STR_TO_DATE 一起使用的变量分配一些内容,例如

LOAD XML LOCAL INFILE 'C:\\xampp\\mysql\\data\\test.xml'
REPLACE
INTO TABLE games (id, GameTitle, @var1)
ROWS IDENTIFIED BY '<Game>'
SET ReleaseDate = STR_TO_DATE(@var1, '%c/%e/%Y');

请注意, in 的语法在LOAD DATASET的语法中LOAD XML描述

于 2013-08-08T10:56:29.910 回答