Как импортировать несколько CSV файлов в базу данных MySQL

Есть ли способ одновременного импорта нескольких файлов csv в базу данных MySQL? Какой-то пакетный импорт?

Я работаю на Mac OSX с сервером MAMP.

У меня есть 185 файлов csv, которые мне нужно импортировать в таблицу MySQL. Я могу импортировать их индивидуально, используя вкладку импорта phpMyAdmin, но это займет много времени. Кто-нибудь знает, есть ли лучший способ?

Ответ 1

Используйте оболочку script следующим образом:

#!/usr/bin/env bash
cd yourdirectory
for f in *.csv
do
        mysql -e "USE yourDatabase LOAD DATA LOCAL INFILE '"$f"'INTO TABLE yourtable"
done

Ответ 2

Для вас немного PHP script:

#!/usr/bin/php
<?
mysql_connect('localhost','root','root'); // MAMP defaults
mysql_select_db('yourdatabase');
$files = glob('*.csv');
foreach($files as $file){
    mysql_query("LOAD DATA INFILE '".$file."' INTO TABLE yourtable");
}

См. руководство MySQL для Параметры LOAD DATA INFILE, которые соответствуют вашим документам.

Ответ 3

Вы можете использовать оболочку script для прокрутки файлов (предполагается, что они находятся в текущем каталоге):

#!/bin/bash

for f in *.csv
do
    mysql -e "load data infile '"$f"' into table my_table" -u username --password=your_password my_database
done

Ответ 4

Я изменил Tom script, чтобы решить несколько проблем, с которыми столкнулись

#!/bin/bash

for f in *.csv
do
    mysql -e "load data local infile '"$f"' into table myTable fields TERMINATED BY ',' LINES TERMINATED BY '\n'"  -u myUser--password=myPassword fmeter --local-infile
done
  • load data local infile вместо load data infile: [файл для загрузки был локальным для сервера mysql]
  • Добавлены разделители для соответствия моим данным.
  • --local-infile для включения режима локальной загрузки данных на клиенте.

Ответ 5

Для окон Пользователь использует эту партию

echo off
setlocal enabledelayedexpansion
FOR %%f IN ("*.csv") DO (
  set old=%%~dpnxf
  set new=!old:\=\\!
  mysql -e "load data local infile '"!new!"' IGNORE into table email_us.business  COLUMNS TERMINATED BY ','" -u root
  echo %%~nxf DONE
)
  • email_us → DB
  • business → Таблица
  • IGNORE → Игнорировать дублируемую вставку и при ошибке продолжать.
  • ~ dpnxf → d для буквы диска, p для пути для файла, n для имени файла, x для расширения, а f - это переменная файла

Шаги:  - Поместите этот пакетный файл в каталог, где есть все несколько файлов csv, и назвал его как something.bat  - запустите cmd.exe как администратор и вызовите этот файл something.bat и наслаждайтесь импортом...

Ответ 6

@hlosukwakha вы хотите использовать mysqlimport. это ищет таблицу, названную как файл. используйте mysqlimport -help, чтобы найти правильные параметры, но они в основном идентичны mysql