Лучший подход к автоматической обработке .csv --> MySQL

Лучший подход к автоматической обработке .csv --> MySQL

Переместите это в нужное место, если необходимо. Не уверен, где я могу получить лучший ответ.

Мне нужно создать приложение для создания отчетов, и я хотел бы сделать это с помощью Ubuntu, если это возможно. Исходные данные поступают из приложения на базе устройства, которое может периодически отправлять по FTP файл журнала с разделителями в указанное место. Я хотел бы разработать механизм использования этих данных для обновления базы данных MySQL (которая будет создана), которая будет использоваться для создания запланированных отчетов, которые в конечном итоге будут отправляться по электронной почте различным группам рассылки (как в формате PDF, так и в формате Excel). У нас есть внутренние умные возможности для создания различных запросов MySQL (и для проектирования базы данных), но у нас нет Linux/Ubuntu, которые бы знали, как определить наилучший подход. Мы делаем что-то похожее для другого приложения на стороне Windows, используя Crystal Reports, но, учитывая необходимость распространения этого приложения, было бы здорово не иметь дело с расходами на лицензирование Windows и т. д.

Мне нужен совет по правильным инструментам/подходу, а также рекомендация, где я могу найти квалифицированных специалистов, которые могут сделать это эффективно и без значительных затрат.

решение1

Вы можете анализировать команды из командной строки, используя следующий синтаксис:

mysql -u {user} -p{password} {database} <{text.file}

Это проанализирует все строки из {text.file} в {database}. Текстовый файл должен содержать допустимые инструкции MySQL, а пароль отображается в виде обычного текста, psпоэтому вы можете захотеть вставить его my.cnf(безопасность превыше всего).

2 метода...

  • Вы можете использовать команду MySQLзагрузить данные(дополнительные параметры см. по ссылке):

    ЗАГРУЗИТЬ ДАННЫЕ [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE {text2.file} В ТАБЛИЦУ {table}

    внутри text.file, чтобы вставить текстовый файл в таблицу. Это, вероятно, перезапишет существующие строки, поэтому вам придется каждый раз создавать новые файлы. LOAD DATA очень-очень быстрый. Более короткий способ (однострочный из комментария Caesium):

    mysql -u {user} -p {pass} -e "LOAD DATA {rest of command}" {db}
    
  • Вы можете поместить много INSERT INTO' в текстовый файл. Это медленнее, чем LOAD DATA, но может быть проще в реализации.

Связанный контент