Как выполнить запрос MySQL и команду bash вместе в одном скрипте? - PullRequest
2 голосов
/ 27 мая 2020

Я хочу выполнить несколько запросов SQL в сценарии bash. Запросы загружают файлы с похожими именами. Например: File1.csv, File2.csv ... Я знаю, что могу использовать

mysql -u root -p <<EOF MYSQL QUERY 1 MYSQL QUERY 2 ... Могу ли я использовать bash переменные в этих запросах? Я также пробовал код вроде

for f in $dir; do 
echo "SET foreign_key_checks = 0; LOAD DATA LOCAL INFILE '$f' INTO TABLE $table CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';"
done`

Однако в последний раз, когда я выполняю такой скрипт, моя таблица разбивается. Пример сценария, который я использовал для написания приведенного выше сценария:

  for f in $dumpDir/*.csv ; do
  table=`basename $f|cut -f1 -d'.'`
  echo "`date` Restoring table $table"
  echo "SET foreign_key_checks = 0; LOAD DATA LOCAL INFILE '$f' INTO TABLE $table CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';" |$mysql || exit 1
done

Моя таблица разбилась из-за того, что мне не хватает части |$mysql || exit 1?

1 Ответ

1 голос
/ 27 мая 2020

Я исправил это, добавив |$mysql ||exit 1 после запроса MYSQL. Я также использовал конфигурацию из проекта ghtorrent. исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...