Ответ 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
Есть ли способ одновременного импорта нескольких файлов csv в базу данных MySQL? Какой-то пакетный импорт?
Я работаю на Mac OSX с сервером MAMP.
У меня есть 185 файлов csv, которые мне нужно импортировать в таблицу MySQL. Я могу импортировать их индивидуально, используя вкладку импорта phpMyAdmin, но это займет много времени. Кто-нибудь знает, есть ли лучший способ?
Используйте оболочку 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
Для вас немного 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, которые соответствуют вашим документам.
Вы можете использовать оболочку 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
Я изменил 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
для включения режима локальной загрузки данных на клиенте.Для окон Пользователь использует эту партию
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
)
d
для буквы диска, p
для пути
для файла, n
для имени файла, x
для расширения, а f - это переменная файлаШаги: - Поместите этот пакетный файл в каталог, где есть все несколько файлов csv, и назвал его как something.bat - запустите cmd.exe как администратор и вызовите этот файл something.bat и наслаждайтесь импортом...
@hlosukwakha вы хотите использовать mysqlimport
.
это ищет таблицу, названную как файл.
используйте mysqlimport -help
, чтобы найти правильные параметры, но они в основном идентичны mysql