Каков наилучший / самый быстрый способ загрузить файл csv в таблицу mysql? Я бы хотел, чтобы первая строка данных использовалась в качестве имен столбцов.
Нашел это:
Как импортировать файл CSV в таблицу MySQL
Но единственный ответ - использовать графический интерфейс, а не оболочку?
Ответы:
Вместо того, чтобы писать скрипт для извлечения информации из файла CSV, вы можете напрямую связать MYSQL с ним и загрузить информацию, используя следующий синтаксис SQL.
Чтобы импортировать файл Excel в MySQL, сначала экспортируйте его как файл CSV. Удалите заголовки CSV из сгенерированного файла CSV вместе с пустыми данными, которые Excel мог поместить в конец файла CSV.
Затем вы можете импортировать его в таблицу MySQL, запустив:
как читаем: Импортируйте файл CSV прямо в MySQL
РЕДАКТИРОВАТЬ
В вашем случае вам сначала нужно написать интерпретатор для поиска первой строки и присвоения им имен столбцов.
РЕДАКТИРОВАТЬ-2
Из документов MySQL по
LOAD DATA
синтаксису :Следовательно, вы можете использовать следующий оператор:
источник
IGNORE 1 LINES
в запросВот простой сценарий командной строки PHP, который сделает то, что вам нужно:
Он создаст таблицу на основе первой строки и импортирует в нее оставшиеся строки. Вот синтаксис командной строки:
источник
fields terminated by ','
... он даже работает с CSV с частичными двойными кавычками.ENCLOSED BY '\"'
... Кроме того, многим людям понадобитсяLINES TERMINATED BY '\r\n'
использовать CSV из Windows. И, наконец, экранирование имен полей с помощью обратных кавычек целесообразно, если есть пробелы:$columns .= "`$column` varchar(250)";
если у вас есть возможность установить phpadmin, есть раздел импорта, в котором вы можете импортировать файлы csv в свою базу данных, есть даже флажок, чтобы установить заголовок, чтобы первая строка файла содержала имена столбцов таблицы (если этот флажок не установлен, первая строка станет частью данных
источник
Сначала создайте таблицу в базе данных с тем же количеством столбцов, что и в файле csv.
Затем используйте следующий запрос
источник
Чтобы загрузить данные из текстового файла или файла CSV, используйте команду
В приведенной выше команде в моем случае нужно загрузить только один столбец, поэтому нет «завершено» и «заключено в», поэтому я оставил его пустым, иначе программист может ввести разделяющий символ. например, для , (запятая) или "или; или что-нибудь еще.
** для людей, которые используют mysql версии 5 и выше **
Перед загрузкой файла в mysql необходимо убедиться, что строка ниже добавлена сбоку.
etc/mysql/my.cnf
для редактирования команды my.cnf
sudo vi /etc/mysql/my.cnf
источник
Если вы запустите mysql как «mysql -u -p --local-infile», он будет работать нормально
источник
Я написал для этого код, добавлю несколько фрагментов:
Затем получите заголовки CSV, чтобы вы могли сообщить mysql, как импортировать (примечание: убедитесь, что ваши столбцы mysql точно соответствуют столбцам csv):
Затем отправьте свой запрос на сервер mysql:
источник
Некоторое время я боролся с этим. Проблема заключается не в том, как загрузить данные, а в том, как построить таблицу для их хранения. Перед импортом данных необходимо сгенерировать оператор DDL для построения таблицы.
Особенно сложно, если в таблице большое количество столбцов.
Вот сценарий Python, который (почти) выполняет свою работу:
Проблема, которую предстоит решить, заключается в том, что окончательное имя поля и объявление типа данных заканчивается запятой, и синтаксический анализатор mySQL этого не допустит.
Конечно, у него также есть проблема в том, что он использует тип данных TEXT для каждого поля. Если в таблице несколько сотен столбцов, то VARCHAR (64) сделает таблицу слишком большой.
Это также, похоже, не работает при максимальном количестве столбцов для mySQL. Вот когда пора переходить на Hive или HBase, если у вас есть такая возможность.
источник
Вот как я сделал это в Python, используя csv и MySQL Connector :
Ключевые моменты
'rb'
двоичном форматеskipinitialspace
опции.255
он недостаточно широкий, вы получите ошибку при INSERT, и вам придется начинать заново.ALTER TABLE t MODIFY `Amount` DECIMAL(11,2);
ALTER TABLE t ADD `id` INT PRIMARY KEY AUTO_INCREMENT;
источник
Импортировать файлы CSV в таблицу mysql
посещений: http://www.webslessons.com/2014/02/import-csv-files-using-php-and-mysql.html
источник
Как уже упоминалось, локальный файл данных загрузки работает нормально. Я попробовал php-скрипт, опубликованный Hawkee, но у меня не получилось. Вместо того, чтобы отлаживать его, я сделал следующее:
1) скопируйте / вставьте строку заголовка файла CSV в файл txt и отредактируйте с помощью emacs. добавьте запятую и CR между каждым полем, чтобы поместить каждое в отдельную строку.
2) Сохранить этот файл в качестве FieldList.txt
3) Отредактируйте файл включить defns для каждого поля (большинство из них были VARCHAR, но совсем немногие из них ИНТ (х). Добавить создать таблицу имя_таблицы (в начале файла и) к конец файла. Сохраните его как CreateTable.sql
4) запустите клиент mysql с вводом из файла Createtable.sql для создания таблицы
5) запустите клиент mysql, скопируйте / вставьте большую часть команды LOAD DATA INFILE, заменяя мою таблицу имя и имя файла csv. Вставьте файл FieldList.txt. Обязательно включите «ИГНОРИРОВАТЬ 1 СТРОКУ» перед вставкой в список полей.
Похоже, много работы, но с emacs легко ...
источник
Использование приложения TablePlus: щелкните правой кнопкой мыши имя таблицы на правой панели. Выберите «Импорт ...»> «Из CSV». Выберите файл CSV. Проверьте соответствие столбца и нажмите «Импортировать все»!
источник
У меня есть поиск в Google, много способов импортировать csv в mysql, включая "загрузить данные в файл", использовать рабочую среду mysql и т. Д.
когда я использую кнопку импорта в mysql workbench, сначала вам нужно создать пустую таблицу самостоятельно, установить каждый тип столбца самостоятельно. Примечание: вы должны добавить столбец идентификатора в конце в качестве первичного ключа, а не null и auto_increment, иначе кнопка импорта не будет видна позже. Однако, когда я начинаю загружать файл CSV, ничего не загружается, это похоже на ошибку. Я сдаюсь.
К счастью, лучший простой способ, который я нашел, - это использовать Oracle mysql для excel. вы можете скачать его здесь mysql для Excel
Вот что вы собираетесь сделать: откройте файл csv в excel, на вкладке Data найдите mysql для кнопки excel
выберите все данные, нажмите экспорт в mysql. Обратите внимание на установку столбца ID в качестве первичного ключа.
Когда закончите, перейдите в рабочую среду mysql, чтобы изменить таблицу, например, тип валюты должен быть десятичным (19,4) для большого количества десятичных (10,2) для регулярного использования. другой тип поля может быть установлен на varchar (255).
источник