嗯,谢谢大家的帮助。看起来它是日期格式中未转义的字符: '%%d/%%m/%%Y %%H:%%i' 是我需要的。由于这是从批处理文件运行的,因此我没有考虑到这一点。
我有一个运行 SQL 命令的批处理文件,我认为我理解了所需的内容,但似乎无法将它们全部组合在一起。当我运行下面的代码时,我可以正确导入所有内容,但是我的 STR_TO_DATE 格式必须关闭,或者我定位第二列的方式必须关闭,因为我只得到“(NULL)”或我的全零当我运行下面的脚本时的 DATETIME 列。
这是我从命令提示符窗口看到的屏幕截图。可疑部分以绿色突出显示:http: //i.imgur.com/TztR31p.png ?1
有任何想法吗?
CREATE TABLE `serials` (
`Serial` INT(10) UNSIGNED NULL DEFAULT '0',
`Stamp` DATETIME NULL DEFAULT NULL,
`Data1` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data2` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data3` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data4` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data5` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data6` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data7` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
`Data8` MEDIUMINT(8) UNSIGNED NULL DEFAULT '0',
INDEX `StampINX` (`Stamp`),
INDEX `SerialINX` (`Serial`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM;
echo on
setlocal enabledelayedexpansion
FOR %%f IN ("*.csv") DO (
set old=%%~dpnxf
set new=!old:\=\\!
mysql -e "LOAD DATA local INFILE '"!new!"' IGNORE into table test.serials COLUMNS TERMINATED BY ','
(Serial,@Stamp,Data1,Data2,Data3,Data4,Data5,Data6,Data7,Data8) SET
Stamp=STR_TO_DATE(@Stamp,'%d/%m/%Y %H:%i')" -u root -ppassword
echo %%~nxf DONE
)
下面是我使用 LOAD DATA INFILE 函数访问的文件示例
Serial,Stamp,Data1,Data2,Data3,Data4,Data5,Data6,Data7,Data8
50183,01/01/2012 00:15,0,77,73,84,0,0,3,62
50183,01/01/2012 00:30,0,100,45,77,0,0,3,67
50183,01/01/2012 00:45,0,96,62,73,0,0,2,61
50183,01/01/2012 01:00,0,81,79,85,0,0,3,56