Какой самый простой способ импортировать новую таблицу в MySQL v5 из CSV?
Вопрос
Я использую MySQL 5 на Linux-сервере в своей локальной сети.Запускаю Windows XP на рабочем столе.Взглянул на Инструменты графического интерфейса MySQL но я не думаю, что они помогут.Я не могу установить Apache на удаленном сервере и использовать что-то вроде PHPmyAdmin.
Решение
я использую SQLyog в моей системе Windows, которая имеет бесплатную версию Community Edition и возможность импорта из CSV.
Я сам никогда не пользовался этой опцией, поэтому не могу сказать, насколько она хороша.Однако SQLyog отлично подходит для всех остальных задач, для которых я его использовал.
Другие советы
посмотрите @load data infile: http://dev.mysql.com/doc/refman/5.0/en/load-data.html
Из оболочки MySQL или браузера запросов...
Если CSV не имеет заголовка:
LOAD DATA INFILE 'mycsvfile.csv' INTO TABLE mytable;
Если CSV имеет заголовок:
LOAD DATA INFILE 'mycsvfile.csv' INTO TABLE mytable IGNORE 1 LINES;
Я бы использовал редактор электронных таблиц для создания набора операторов SQL.Поместите новый столбец в начало и добавьте insert into tablename values('
.Добавьте другие столбцы, чтобы разделить данные с помощью кода типа '','
.Завершить с '');
.Используйте функцию автозаполнения, чтобы перетащить эти ячейки вниз до необходимого количества строк.Скопируйте весь лист в текстовый редактор и удалите лишние табуляции, оставив простой набор операторов вставки.
Это решение, которое я могу использовать для любой системы баз данных и любого формата файлов электронных таблиц.Кроме того, таблицу легко заполнить из таких источников, как другие базы данных, или скопировать и вставить с веб-страницы.Это также довольно быстро и доступно с любого настольного компьютера, используя Excel, OpenOffice или Google Docs.
См. мой пример таблицы в Эксель и OpenOffice версии.
Я просто сделал это, используя LOAD DATA INFILE
но стоит отметить, что это не так просто, как в примере с Гаретом (Кай совершенно прав, что вам стоит посмотреть документация).Чтобы правильно импортировать значения, разделенные запятыми, я использовал это:
LOAD DATA LOCAL INFILE 'mycsvfile.csv' INTO TABLE mytable
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Предполагается, что файл CSV заключен в кавычки вокруг каждого поля и имеет одну строку заголовка вверху.(Вам, вероятно, не нужен LINES TERMINATED BY
так как это должно быть значение по умолчанию, но рекомендуется указывать явно.)
Приложение Toad творит чудеса и является бесплатным.Если у вас есть подходящий файл CSV, он создаст таблицу и импортирует все данные за вас.
Напишите простой скрипт Python, который анализирует CSV и вставляет его в таблицу.
Посмотрите на csv и MySQLDB модуль.
Если вы не против использовать немного коммерческого программного обеспечения, тогда Navicat (http://mysql.navicat.com/) — очень полезное программное обеспечение, доступное для Mac, Windows и Linux.Я регулярно использую его для импорта большого файла CSV в базу данных.
Жаба для MySQL сделает это хорошо, со значительным контролем над импортом (например, выборочное сопоставление столбцов) и, что наиболее важно, бесплатно.
Я также использовал SQLYog, но для этого вам потребуется коммерческая версия, поскольку импорт из файла недоступен в версии для сообщества.
Toad — отличное программное обеспечение, которое поставляется в версиях для всех основных баз данных, и в прошлом я также использовал версии MSSQL и Oracle.Рекомендуемые.