Загрузите CSV и импортируйте его в базу данных MySQL - PullRequest
0 голосов
/ 14 января 2012

Я пишу следующий сценарий импорта файла CSV в базу данных MySQL. Пользователь должен сначала войти в систему, и его права безопасности для загрузки проверяются другим файлом, если это имеет значение true, файл может быть загружен загрузчиком файлов, который позволит загружать только CSV-файлы, а затем следующую часть. импортирует файл.

Использую ли я правильный код для этого ниже? Также, если макет csv неправильный, возможно ли отказаться от импорта?, Я просто обеспокоен тем, что это может пойти не так, если csv отформатирован правильно. Эта функция была запрошена как требование для этого проекта, поэтому я просто пытаюсь сделать ее настолько идиотской, насколько это возможно для них.

<?php
$uploadedcsv = './uploads/'.$filename.'';
$sql = 'LOAD DATA LOCAL INFILE "'.$uploadedcsv.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES' or die(mysql_error());
?>

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Если вы не на 100% полагаетесь на пользователя, и кажется, что это не так, Было бы хорошо не слепо импортировать загруженный файл, а сначала проверить его правильность.

Для этого вам нужно открыть и прочитать файл, например, с fgetcsv и построчно проверять согласованность данных.


Вы можете найти множество примеров в Интернете.

Вот только некоторые:

0 голосов
/ 14 января 2012

Это можно сделать через MySQL, но по умолчанию LOAD DATA INFILE ожидает другой формат, чем CSV. Из документации:

If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

Примечания к документации для работы с CSV-файлами:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

Это пример работы со значениями, разделенными запятыми, заключенными в "" и разделенными строкой \ r \ n

Чтобы использовать это для импорта файла, убедитесь, что ваша выписка соответствует формату CSV ваших загружаемых файлов, и вы можете импортировать таким образом.

...