Объединить мою переменную php с данными CSV при импорте LOAD DATA INFILE - PullRequest
0 голосов
/ 28 апреля 2019

Мне нужно импортировать некоторые CSV-файлы в MySQL.

Я недавно нашел информацию о INFILE LOAD DATA, я, насколько я понимаю, проверил руководство, чтобы импортировать каждую строку файла .csv в базу данных.

Мне было интересно, есть ли возможность объединить дополнительное значение с тем, что содержит файл csv.

Например: в моей таблице 3 столбца.

MYTABLE (# имя, # электронная почта, company_adrs);

Файл csv содержит данные только для "name, email", а у меня есть адрес в переменной php.

С помощью обычного цикла я бы достиг этого следующим образом:

//open file
while (/* not end of file, read eachline*/)
{
  $current_line_of_csv_file; // contains: "John,john@john.com" without the 3rd column
  $myAddrsVar= mysqli_real_escape_string($db, $_POST['adrs']); //"44 company st" 
  $insert = $db->query("INSERT MYTABLE (name,email,company_adrs) VALUES ( $current_line_of_csv_file,'".$myAddrsVar."')");

}

С помощью этого метода я должен пройти через каждую строку csv и выполнить запрос в каждой итерации.

Мне было интересно, есть ли в LOAD DATA INFILE метод для объединения моих данных в файл csv? если да, то как мне этого добиться?

Заранее спасибо

1 Ответ

0 голосов
/ 28 апреля 2019

Учитывая вашу ситуацию, я бы рекомендовал использовать PHP all-in-all и таким образом вставлять данные в MySQL.

https://www.php.net/manual/en/function.str-getcsv.php может помочь вам разобрать CSV в массив.Добавьте в массив адрес.Теперь у вас будет набор данных в массиве.

Используйте подготовленные операторы, как показано здесь https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection, и вставляйте данные один за другим.

Используйте транзакции, чтобы все данныевставлено или данные не вставлены.См. Как начать и завершить транзакцию в mysqli? .

Я бы не использовал LOAD DATA INLINE, потому что объем данных не такой большой.Если вы действительно хотите использовать его и добавить другой столбец, вы можете использовать оператор SET.Вот пример этого: Добавить дополнительный столбец данных при использовании LOAD DATA LOCAL INFILE

...