Массовая вставка MySQL из файлов данных CSV - PullRequest
4 голосов
/ 11 мая 2010

У меня есть несколько файлов данных CSV, которые я хочу импортировать в mySQL. Я хотел бы сделать вставку в сценарий оболочки, чтобы он мог быть автоматизирован. Тем не менее, я немного устал от имени пользователя и пароля в виде открытого текста в сценарии

У меня есть следующие вопросы:

  1. Мне не нравится идея uname / pwd в открытом тексте в сценарии (есть ли что-нибудь вокруг этого, или я слишком параноик) ?. Может быть, я могу настроить пользователя только с INSERT privelege для таблицы, которая будет вставлена?

  2. Таблица базы данных (в которую импортируются необработанные данные) имеет уникальный ключ на основе столбцов таблицы. Также возможно, что в данных, которые я пытаюсь импортировать, могут быть дубликаты. Вместо того, чтобы раздражать mySQL (т.е. вся вставка не удалась), я бы вместо этого хотел бы иметь возможность указать mySQL EITHER

(a) ОБНОВИТЬ строку с новыми данными ИЛИ (б) игнорировать дубликат строки.

Какой бы параметр я ни выбрал, он будет для ВСЕГО импорта, а не для каждой строки. Есть ли какие-либо флаги и т. Д., Которые я могу передать mysql, чтобы он вел себя как (a) ИЛИ (b) выше

  1. Кто-нибудь может предложить отправную точку для написания такого (bourne) сценария оболочки?

1 Ответ

7 голосов
/ 11 мая 2010

Вы должны прочитать о mysqlimport , который является инструментом командной строки, предоставляемым с MySQL. Этот инструмент является самым быстрым способом массовой загрузки данных CSV.

У инструмента есть две опции , --replace и --ignore для обработки дублированных конфликтов ключей.

Что касается безопасности и избегания ввода пароля в тексте в виде простого текста, вы также можете использовать переменную среды MYSQL_PWD или файл .my.cnf (убедитесь, что файл находится в режиме 400 или 600). См. Руководство для конечных пользователей по защите паролем .

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