У меня есть Windows пакетный файл, который читает все CSV-файлы в его каталоге. Проблема заключается в том, что строки CSV имеют двойные кавычки в метке времени, а также включают микроданные. Я уверен, что нижеприведенный код должен быть закрыт, но он либо импортирует одну строку, либо выдает NULL в столбце timestamp, или указывает, что «SET был неожиданным в это время», что, я думаю, связано с неэкранированным символом потому что это выполняется как Windows командный файл Мой код ниже и ниже, это образец данных файла CSV.LOAD DATA INFILE с кавычками вокруг метки времени, которая содержит микросекунды
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 db.table COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' (prodID,@timeStamp,Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8) SET timeStamp=STR_TO_DATE(@timeStamp,'%%Y-%%m-%%d %%H:%%i:%%s.%%f')" -u user -ppass
echo %%~nxf DONE
)
12499,"2014-01-28 11:00:00.0",0,0,0,0,0,5,0,0
12499,"2014-01-28 12:00:00.0",0,4,0,0,1,0,0,2
12499,"2014-01-28 13:00:00.0",0,1,0,0,4,0,0,4
12499,"2014-01-28 14:00:00.0",0,0,0,0,0,0,0,7
12499,"2014-01-28 15:00:00.0",0,0,0,0,3,0,0,2
Я monkeyed с этим сценарием вы положили вместе на выходные и немного более сегодня, и я могу что он выводится, как вы говорите, но ничего не импортирует в базу данных. Я буду честен, хотя, я понятия не имею, что происходит с изменениями, которые вы сделали. Я буду держать Googling и, надеюсь, это будет иметь больше смысла, но я ценю вашу работу. Казалось бы, мне нужно много узнать о сценариях .bat. – JubJub24