Заполнение таблицы MySQL с помощью импорта файлов Mutliple

0

У меня есть таблица MySQL, которая нуждается в периодическом обновлении с помощью команды LOAD DATA INFILE, которая получает структурированные данные из CSV файла. Первоначально мне приходилось выполнять эту команду LOAD DATA один раз в неделю для одного файла.csv, теперь все подбирается, и мне нужно импортировать данные из нескольких CSV файлов несколько раз в неделю. Я не думаю, что у MySQL есть механизм для итерации содержимого каталога, поиска всех CSV файлов и последующей загрузки данных из каждого, прежде чем переходить к следующему.

Поэтому я думаю, что мне нужен какой-то сценарий командной строки, который выполняет итерацию по всем файлам определенного типа в заданном каталоге, передает имя файла в команду mySQL LOAD DATA INFILE, ждет, пока mySQL завершит обработку этого файла, а затем перейдет к следующий файл, пока все файлы не будут обработаны. Я хотел бы узнать bash-скрипты когда-нибудь, поэтому, если bash предлагает хороший способ сделать это, я бы хотел начать использовать bash. Или если у mySQL есть способ сделать это, это тоже хорошо.

Это на платформе Macbook (iOS).

  • 0
    Уточните свой вопрос более подробно. Вас интересуют возможные способы перебора файлов, кроме bash-script это может быть также скрипт на python.
Теги:
import

1 ответ

0

Это простое решение с использованием 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

  • 0
    Благодарю. Я постараюсь это как можно скорее. Я предполагаю, что я был прав в том, что нет способа сделать это из MySQL?
  • 0
    Это не сработало для меня, так как для SQL-оператора <use load ...> требовались дополнительные экранирующие символы, и это приводило в замешательство, такое как '... ENCLOSED BY \ ""' "" ESCAPED BY "" '"'. Есть ли способ записать MySQL в отдельный файл, а затем просто вызвать этот файл из сценария bash?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню