Множественные возможности для ЛИНИИ, ПРЕРЫВАННЫХ И ПОЛЯМИ, ПРЕКРАЩЕННЫМИ – MySQL

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

$sql = "LOAD DATA LOCAL INFILE '".$_FILES["file"]["tmp_name"]."' INTO TABLE persons FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r' (id, name, email, contacts)"; 

Это отлично работает для .csv файла, который я создал на моем компьютере, но не у всех CSV-файлов есть поля, которые заканчиваются точкой с запятой и имеют строки, которые заканчиваются символом \r . Теперь я хочу, чтобы этот запрос работал для всех .csv файлов. В противном случае эта функция не будет работать достаточно хорошо, чтобы ее реализовать в моей CMS. Есть ли способ сделать эту работу для файлов .csv которые имеют другие поля и окончания строк? (например, \ n, \ r \ n,,)

Попробуйте LINES TERMINATED BY '\r\n'

Это будет работать для файлов, заканчивающих строки с помощью '\ r \ n', но также с '\ r' и '\ n'. Из документов MySQL:

ПЛАНИРОВАННЫЕ ПОЛЯМИ, ЗАПУСКАМИ ЛИНИЙ И ЛИНИЯМИ, ПРЕКРАЩЕННЫМИ значениями, могут быть более одного символа. Например, для записи строк, которые завершаются парами возврата каретки / перевода строки или для чтения файла, содержащего такие строки, укажите предложение LINES TERMINATED BY '\ r \ n'.

[EDITED]

Вам также необходимо добавить \r\n к предложению FIELDS TERMINATED BY , чтобы сообщить парсеру не включать символы конца строки в последнее поле первой строки. Так

FIELDS TERMINATED BY ';, \t\r\n'

будет работать в большинстве случаев.