У меня есть таблица MySQL, которая нуждается в периодическом обновлении с помощью команды LOAD DATA INFILE, которая получает структурированные данные из CSV файла. Первоначально мне приходилось выполнять эту команду LOAD DATA один раз в неделю для одного файла.csv, теперь все подбирается, и мне нужно импортировать данные из нескольких CSV файлов несколько раз в неделю. Я не думаю, что у MySQL есть механизм для итерации содержимого каталога, поиска всех CSV файлов и последующей загрузки данных из каждого, прежде чем переходить к следующему.
Поэтому я думаю, что мне нужен какой-то сценарий командной строки, который выполняет итерацию по всем файлам определенного типа в заданном каталоге, передает имя файла в команду mySQL LOAD DATA INFILE, ждет, пока mySQL завершит обработку этого файла, а затем перейдет к следующий файл, пока все файлы не будут обработаны. Я хотел бы узнать bash-скрипты когда-нибудь, поэтому, если bash предлагает хороший способ сделать это, я бы хотел начать использовать bash. Или если у mySQL есть способ сделать это, это тоже хорошо.
Это на платформе Macbook (iOS).
Это простое решение с использованием bash. Скажем, все.csv находятся в папке "Данные".
Open a terminal then go to the folder on the same level with Data
Type this "vi script.sh" to open an editor
Copy/paste below codes:
#!/bin/bash
for filename in ./Data/*.csv; do
<use load data using "$filename">
done
Press ESC then :
Type wq! then enter -> to save (w) and quit
Change mode of the script:
Type chmod 775 script.sh
Then run this script:
sh <script.sh>.
Он будет сканировать все файлы csv в папке "Данные", затем загружать данные загрузки, используя этот csv