Проблемы при импорте TXT-файла в Postgres с помощью PHP - PullRequest
3 голосов
/ 15 января 2012

Я пытаюсь импортировать файл txt / csv в мою базу данных postgres из php с помощью команды "\ copy".Я не могу использовать COPY вместо \ copy, так как мне нужно, чтобы он выполнялся как клиент psql.Мой код:

$query = '\\'.'copy data1 FROM "data1.txt" WITH CSV HEADER DELIMITER AS "," QUOTE AS "^"';

$result = pg_query($conn,$query);
if (!$result) {
  echo "cannot copy data\n";
} else {
  echo "SUCCESS!";
}

Когда я запускаю этот файл php, я получаю эту ошибку:

PHP Warning:  pg_query(): Query failed: ERROR:  syntax error at or near "\"
LINE 1: \copy data1 FROM "data1.txt" WITH ...
    ^ in script.php on line 30

1 Ответ

7 голосов
/ 15 января 2012

На самом деле, вы не можете запустить \copy через pg_query(). Это , а не команда SQL . Это метакоманда psql клиента .

Там можно извиниться:

\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'

Или выполните команду оболочки:

psql mydb -c "\copy data1 FROM 'data1.txt'
                WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"

Обратите внимание на кавычки. Значения должны быть в кавычках в PostgreSQL : 'value'.
Двойные кавычки предназначены для идентификаторов - и фактически нужны только для идентификаторов с заглавными или недопустимыми символами или для зарезервированных слов: "My table".

...