Как записывать данные из CSV / Excel в MySQL DB? [Дубликат]

Как правило, соглашение будет заключаться в том, чтобы не использовать скобки в операторе return, поскольку это не функция. В этом случае синтаксический анализатор будет просто полностью игнорировать скобки.

Кортежи обычно выражаются скобками для повышения удобочитаемости, однако они не требуются.

В конечном счете, однако, они все функции идентичны, и это сводится к предпочтению.

221
задан dreftymac 2 June 2017 в 10:28
поделиться

15 ответов

Ядро вашей проблемы похоже на сопоставление столбцов в файле CSV с таковыми в таблице.

Многие графические mySQL-клиенты имеют очень приятные диалоговые окна импорта для такого рода вещей.

Моим любимым для работы является Windows на основе HeidiSQL . Он предоставляет графический интерфейс для сборки команды LOAD DATA; вы можете повторно использовать его программно позже.

Снимок экрана: диалог «Импорт текстового файла»

Чтобы открыть диалоговое окно «Импорт текстового файла», перейдите к Tools > Import CSV file:

109
ответ дан Franck Dernoncourt 16 August 2018 в 01:17
поделиться
  • 1
    Для Mac OSX используйте Sequel Pro. – Agi Hammerthief 19 March 2014 в 15:31
  • 2
    Я просто попробовал, и мне нужно сначала создать таблицу ... вместо использования имен столбцов. – Dominique 4 November 2014 в 17:55
  • 3
    Вы должны выбрать таблицу, прежде чем сможете продолжить ... и поскольку весь смысл не в том, чтобы сделать таблицу ... – Dominique 4 November 2014 в 21:06
  • 4
    Обратите внимание, что в Linux HeidiSQL отлично работает под Wine. – AlejandroVD 23 May 2017 в 16:29
  • 5
    @Paul the the point ответа заключается в том, что инструменты GUI могут упростить сопоставление столбцов импорта с столбцами таблицы. – Pekka 웃 25 September 2017 в 09:29

Используйте mysqlimport для загрузки таблицы в базу данных:

mysqlimport --ignore-lines=1 \
            --fields-terminated-by=, \
            --local -u root \
            -p Database \
             TableName.csv

Я нашел ее в http://chriseiffel.com/everything-linux/how -to-import-a-large-csv-file-to-mysql /

Чтобы сделать вкладку разделителя табуляцией, используйте --fields-terminated-by='\t'

149
ответ дан Bob Stein 16 August 2018 в 01:17
поделиться
  • 1
    mysqlimport использует LOAD DATA INFILE... за кулисами, так что это почти то же самое. – Mladen Jablanović 1 December 2014 в 09:21
  • 2
    Как и в случае с LOAD DATA INFILE, вам нужно создать таблицу, прежде чем вы сможете использовать mysqlimport. – Marcus Downing 9 June 2015 в 10:47
  • 3
    @ Младен Ябланович, это определенно не то же самое. Попробуйте импортировать строки в 1 бил. Вы будете удивлены, какая огромная разница в производительности – ninjabber 18 April 2016 в 11:46
  • 4
    @ninjabber Документы говорят Клиент mysqlimport предоставляет интерфейс командной строки для LOAD DATA INFILE , поэтому теоретически невозможно предложить какую-либо производительность преимущество над LOAD DATA INFILE. – Mladen Jablanović 18 April 2016 в 13:21
  • 5
    также нужны --fields-optionally-enclosed-by=\" и `--fields-escaped-by = \` – chaintng 7 July 2017 в 03:50

Самый простой способ, которым я импортировал 200+ строк, ниже команды в phpmyadmin sql window

У меня есть простая таблица страны с двумя столбцами CountryId, CountryName

здесь .csv данные CSV FILE [/g0]

здесь: команда:

LOAD DATA INFILE 'c:/country.csv' 
INTO TABLE country 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS

Помните, что во второй колонке никогда не появляется, иначе ваш импорт остановится

66
ответ дан DareDevil 16 August 2018 в 01:17
поделиться
  • 1
    ',' - & gt; '\ t', '& quot;' - & GT; '' в случае файлов TSV и удалить последнюю строку, если нет заголовка. (поисковые сканеры надежды индексируют это). – Bleeding Fingers 16 December 2014 в 01:08
  • 2
    Если это локальный файл, вам может понадобиться LOAD DATA LOCAL INFILE. Если это выдает ошибку, 1148 «используемая команда не разрешена», вы можете включить ее, запустив mysql в командной строке с помощью --local-infile. – David Kennedy 15 April 2015 в 04:45
  • 3
    я получил ошибку: ERROR 1045 (28000): доступ запрещен для пользователя пользователя '%' (с использованием пароля: ДА) – ARUNBALAN NV 23 January 2017 в 10:07
  • 4
    Вы должны предоставить весь доступ к пользователю, с панели администратора, затем попробуйте импортировать скрипт. – DareDevil 23 January 2017 в 10:08
  • 5
    Я получаю эту ошибку: сервер MySQL работает с параметром --secure-file-priv, поэтому он не может выполнить это утверждение – Agniswar Bakshi 17 January 2018 в 13:42

Попробуйте это, это сработало для меня

    LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;

IGNORE 1 ROWS здесь игнорирует первую строку, которая содержит имена полей. Обратите внимание, что для имени файла вы должны ввести абсолютный путь к файлу.

2
ответ дан David 16 August 2018 в 01:17
поделиться
  • 1
    Это лучший ответ. Зачем использовать другой инструмент , когда будет выполняться одна команда SQL? – sdgfsdh 29 March 2018 в 11:11

Вы также можете попробовать этот онлайн-инструмент для создания операторов SQL create / insert на основе вашего CSV. http://www.convertcsvtomysql.com/

Что мне нравится в этом инструменте:

  • Простой
  • Это не только генерирует инструкции INSERT, но и CREATE для генерации таблицы
  • . При создании операторов CREATE этот инструмент не просто делает все поля VARCHAR - он анализирует данные в вашем CSV и на основе этого анализа выбирает

    Недостатки

    • Размер входного файла ограничен 3mb
    • Возможно, вы не захотите отдать свой данные третьим лицам
2
ответ дан Ievgen 16 August 2018 в 01:17
поделиться
  • 1
    SQL Fiddle делает это тоже. Установите механизм базы данных в MySQL, нажмите «Текст в DDL», вставьте содержимое CSV в диалоговое окно и нажмите «Добавить в DDL». Панель DDL будет содержать оператор CREATE TABLE и оператор INSERT VALUES. Если вы не нажмете «построить схему», все данные остаются в вашем веб-браузере. Я не тестировал его на больших файлах CSV. – Iain Samuel McLean Elder 13 November 2013 в 19:07
  • 2
    очень хороший сайт, поскольку он генерирует несколько значений. Инструкция INSERT, которая полностью настраивается и надежна для вставки данных по сравнению с импортом CSV. – iltaf khalid 23 December 2013 в 09:26
  • 3
    У этого инструмента, похоже, много проблем с экранированными запятыми и автоматическое угадывание разделителя. Это действительно нужно, чтобы сказать, что такое разделитель CSV, и уважать экранированные символы разделителя. – John Postlethwait 16 February 2014 в 10:14

Я знаю, что вопрос старый , но я хотел бы поделиться этим

. Я использовал этот метод для импорта более 100 тыс. записей ( ~ 5 МБ) в 0.046 сек

Вот как вы это делаете:

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

Очень важно включить последнюю строку, если у вас более одного поля, т.е. обычно оно пропускает последнее поле (MySQL 5.6.17)

LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

Тогда, если вы считаете, что первая строка является заголовком для ваших полей, вы можете включить эту строку также

IGNORE 1 ROWS

Это выглядит так, как если бы в вашем файле была строка заголовка.

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);
34
ответ дан jbrahy 16 August 2018 в 01:17
поделиться
  • 1
    Я импортировал 16k строк и 48 столбцов. Спасибо, приятель. – Renjith VR 21 September 2017 в 16:55

Вы можете исправить это, указав столбцы в инструкции LOAD DATA. Из руководства :

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

... поэтому в вашем случае вам нужно указать 99 столбцов в том порядке, в котором они отображаются в файле csv.

10
ответ дан lafncow 16 August 2018 в 01:17
поделиться

Вот пример снимка экрана excel file:

Сохранить как и выбрать .csv.

И у вас будет как показано ниже. CSV-экран данных, если вы открываете с помощью блокнота ++ или любого другого блокнота.

Убедитесь, что вы удалите заголовок и разместите его. csv как в таблице mysql. Замените имя_папки на имя вашей папки

LOAD DATA LOCAL INFILE 'D: /folder_name/myfilename.csv' INTO TABLE mail ПОЛЯ, ПРЕРЫВАННАЯ ',' (fname, lname, email, phone);

Если большие данные, вы можете взять кофе и загрузить его.

Это все, что вам нужно.

0
ответ дан Magige Daniel 16 August 2018 в 01:17
поделиться

phpMyAdmin может обрабатывать импорт CSV. Вот шаги:

  1. Подготовьте CSV-файл к полям в том же порядке, что и поля таблицы MySQL.
  2. Удалите строку заголовка из CSV (если есть ), так что в файле будут только данные.
  3. Перейдите в интерфейс phpMyAdmin.
  4. Выберите таблицу в левом меню.
  5. Нажмите на импорт
  6. Перейдите в файл CSV.
  7. Выберите параметр «CSV, используя LOAD DATA».
  8. Введите «,» в поля « завершено «.
  9. Введите имена столбцов в том же порядке, что и в таблице базы данных.
  10. Нажмите кнопку go и вы закончите.

Это примечание, которое я подготовил для моего будущего использования и поделился здесь, если кому-то может помочь.

19
ответ дан Pang 16 August 2018 в 01:17
поделиться
  • 1
    Это хорошо и просто. Я предпочитаю создавать таблицы и столбцы через SQL (поэтому я пропускаю Шаг № 9) и вставляя данные через импорт CSV. Не забудьте установить NULL в CSV для любых автоматически увеличивающих полей / столбцов. – silver 24 March 2015 в 09:52
  • 2
    Обратите внимание, что phpMyAdmin терпит неудачу, когда кириллические символы включены в CSV-файл, независимо от того, как вы говорите ему об использовании utf-8. – Fran Marzoa 21 October 2016 в 10:47
  • 3
    Не забудьте изменить размер импорта, если вы импортируете большой CSV-файл. Кстати, это не очень хороший вариант для больших файлов CSV. – Avi 3 January 2018 в 12:01

Еще одно решение - использовать инструмент csvsql из удивительного набора csvkit .

Пример использования:

csvsql --db mysql://$user:$password@localhost/$database --insert --tables $tablename  $file

Этот инструмент может автоматически выводить типы данных (поведение по умолчанию), создавать таблицу и вставлять данные в созданную таблицу. Опция --overwrite может использоваться для удаления таблицы, если она уже существует. --insert - для заполнения таблицы из файла.

Для установки пакета

pip install csvkit

Предварительные требования: python-dev, libmysqlclient-dev, MySQL-python

apt-get install python-dev libmysqlclient-dev
pip install MySQL-python
0
ответ дан ruvim 16 August 2018 в 01:17
поделиться

Измените имя сервера, имя пользователя, пароль, имя dbname, путь к вашему файлу, имя_таблицы и поле, которое находится в вашей базе данных, которую вы хотите вставить

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "bd_dashboard";
    //For create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = "LOAD DATA LOCAL INFILE 
                'C:/Users/lenovo/Desktop/my_data.csv'
                INTO TABLE test_tab
                FIELDS TERMINATED BY ','
                LINES TERMINATED BY '\n'
                IGNORE 1 LINES
                (name,mob)";
    if (!$result = mysqli_query($conn, $query)){
        echo '<script>alert("Oops... Some Error occured.");</script>';
        exit();
            //exit(mysqli_error());
       }else{
        echo '<script>alert("Data Inserted Successfully.");</script>'
       }
    ?>
1
ответ дан Srikrushna Pal 16 August 2018 в 01:17
поделиться

PHP Query для импорта csv-файла в базу данных mysql

$query = <<<EOF
            LOAD DATA LOCAL INFILE '$file'
             INTO TABLE users
             FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             IGNORE 1 LINES
            (name,mobile,email)
    EOF;
if (!$result = mysqli_query($this->db, $query))
   {
        exit(mysqli_error($this->db));
   }

** Пример данных файла CSV **

name,mobile,email
Christopher Gritton,570-686-3439,ChristopherKGritton@inbound.plus
Brandon Wilson,541-309-5149,BrandonMWilson@inbound.plus
Craig White,516-795-8065,CraigJWhite@inbound.plus
David Whitney,713-214-3966,DavidCWhitney@inbound.plus
0
ответ дан Suwarnakumar Kanapathipillai 16 August 2018 в 01:17
поделиться

Командная строка mysql подвержена слишком большому количеству проблем при импорте. Вот как вы это делаете:

  • использовать excel для редактирования имен заголовков, чтобы не иметь пробелов
  • Сохранить как .csv
  • использовать бесплатно Navicat Lite Sql Browser для импорта и автоматического создания новой таблицы (дайте ей имя)
  • откройте новую таблицу, вставьте первичный столбец автоматического номера для ID
  • , измените тип столбцов по желанию .
  • сделано!
7
ответ дан user1464271 16 August 2018 в 01:17
поделиться

Если вы используете MySQL Workbench (в настоящее время версия 6.3), вы можете сделать это с помощью:

  1. Щелкните правой кнопкой мыши «Таблицы»;
  2. Выберите Мастер импорта данных таблицы;
  3. Выбирайте файл csv и следуйте инструкциям (JSON также может быть использован); Хорошо, что вы можете создать новую таблицу на основе файла csv, который хотите импортировать или загрузить данные в существующую таблицу

1
ответ дан Vitaliy Pak 16 August 2018 в 01:17
поделиться

Если вы используете машину Windows с загруженной электронной таблицей Excel, новый плагин mySql в Excel является феноменальным. Люди в Oracle действительно хорошо справились с этим программным обеспечением. Вы можете напрямую подключиться к базе данных из Excel. Этот плагин будет анализировать ваши данные и настраивать таблицы для вас в формате, совместимом с данными. У меня были некоторые файлы csv больших монстров данных для преобразования. Этот инструмент был большой экономии времени.

http://dev.mysql.com/downloads/windows/excel/

Вы можете делать обновления из Excel, которые будут заполняться в базе данных онлайн. Это очень хорошо работало с файлами mySql, созданными на ультра дешевом хостинге GoDaddy. (Обратите внимание, что когда вы создаете таблицу в GoDaddy, вам нужно выбрать некоторые нестандартные настройки, чтобы отключить доступ к базе данных в базе данных ...)

С помощью этого плагина у вас есть чистая интерактивность между вашей электронной таблицей XL и онлайн-хранилище данных mySql.

1
ответ дан zipzit 16 August 2018 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: