我正在尝试使用“\copy”命令将 txt/csv 文件从 php 导入我的 postgres 数据库。我不能使用 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
实际上,您\copy不能通过pg_query(). 它不是 SQL 命令。它是psql客户端的元命令。
\copy
pg_query()
在那里你可以执行:
\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'
或者运行 shell 命令:
psql mydb -c "\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"
注意引号。值需要在 PostgreSQL 中单引号): 'value'。 双引号用于标识符 - 仅实际需要用于具有大写字母或非法字符的标识符或保留字:"My table".
'value'
"My table"