ЗАГРУЗКА ДАННЫХ В ИНФАЛЕ не работает с ПОЛЯМИ, ПРЕКРАЩЕННЫМИ - PullRequest
0 голосов
/ 17 июня 2010

Я использую sql ниже в php-скрипте:

$sql1 = "LOAD DATA LOCAL INFILE 'test1.csv' INTO TABLE number1 (order_num,pname)";
$sql2 = "LOAD DATA LOCAL INFILE 'test1.csv' INTO TABLE number1 (order_num,pname) FIELDS TERMINATED BY ':'";
if ($result = $mysqli->query($sql)) {
    printf("<br>Section 4: %s",$mysqli->error);
    printf("|$result|$table");
} else {
    printf("<br>Section 5: %s",$mysqli->error);
}

Если я использую $sql1, это правильно переносит 3 строки в БД (не разбивает их на соответствующие поля).Ошибка не возвращается.Если я использую $sql2, он возвращает сообщение:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ':'.."

Я пробовал другой порядок, используя ENCLOSED BY с ним / вместо него ... Все, что я могу придумать.У кого-нибудь есть предложение?

Ответы [ 2 ]

5 голосов
/ 17 июня 2010

Проверьте документацию ... Объявление поля должно идти после полей, завершенных объявлением:

$sql2 = "LOAD DATA LOCAL 
            INFILE 'test1.csv' 
            INTO TABLE number1 
            FIELDS TERMINATED BY ':'
            (order_num,pname)";
0 голосов
/ 17 июня 2010

Да (order_num, pname) недопустим, есть другой синтаксис для сопоставления полей с именами столбцов.

...