Импортируйте большой CSV-файл в базу данных MySQL, используя PHP - PullRequest
7 голосов
/ 23 сентября 2010

У меня очень большой файл CSV (150 МБ). Каков наилучший способ импортировать его в MySQL? Я должен сделать некоторые манипуляции в PHP, прежде чем вставить его в таблицу MySQL.

Ответы [ 2 ]

6 голосов
/ 23 сентября 2010

Вы можете взглянуть на ЗАГРУЗКА ДАННЫХ INFILE в MySQL.

Возможно, вы сможете выполнить манипуляции после загрузки данных в MySQL, а не сначала читать их в PHP. Сначала сохраните необработанные данные во временной таблице, используя LOAD DATA INFILE, а затем преобразуйте данные в таблицу назначения, используя следующую инструкцию:

INSERT INTO targettable (x, y, z)
SELECT foo(x), bar(y), z
FROM temptable
3 голосов
/ 23 сентября 2010

Я бы просто открыл его с помощью fopen и использовал fgetcsv для чтения каждой строки в массив. псевдо-php следует:

mysql_connect( //connect to db);

$filehandle = fopen("/path/to/file.csv", "r");
while (($data = fgetcsv($filehandle, 1000, ",")) !== FALSE) {
    // $data is an array
    // do your parsing here and insert into table
}

fclose($filehandle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...