У меня есть datbase mysql с таблицами, которые имеют те же имена столбцов, что и файлы csv, которые я получаю. Раньше я использовал пакетный файл Windows для загрузки в mysql.
@echo off
echo TRUNCATE TABLE `alarms`; > importalarm.sql
echo Creating list of MySQL import commands
for %%s in (*.csv) do
echo LOAD DATA LOCAL INFILE '%%s' INTO TABLE `alarms`
FIELDS TERMINATED BY ',' ENCLOSED BY ' '
ESCAPED BY '/'LINES TERMINATED BY '\r\n' IGNORE 1 LINES; >> importcsv.sql;
echo mysql -u root -p uninetscan < importalarm.sql
Мне нужно превратить это в linux script.
Любые идеи.
Вот как вы могли бы сделать что-то подобное в linux:
#!/bin/bash
echo 'TRUNCATE TABLE `alarms`;' > importalarm.sql
echo "Creating list of MySQL import commands"
for f in *.csv; do
echo "LOAD DATA LOCAL INFILE '$f' INTO TABLE \`alarms\` FILEDS TERMINATED BY ',' ENCLOSED BY ' ' ESCAPED BY '/' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;" >> importcsv.sql;
done
echo 'mysql -u root -p uninetscan < importalarms.sql'
Я заметил, что вы отправляете вывод в 2 файла (importalarm.sql и importcsv.sql), не уверен, что это то, что вы хотите, но это очень легко изменить. Кроме того, последняя строка просто отражает команду, а не выполняет ее. Если вы хотите выполнить его, просто удалите эхо и кавычки.