我查看了有关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解决了我所遇到过的所有问题,甚至不用问。
答案 0 :(得分: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');
请注意SET
LOAD XML
中{{1}}的语法