使用php将txt文件导入postgres时出现问题

Him*_*har 3 php postgresql file-io postgresql-copy

我试图使用"\ copy"命令从php导入txt/csv文件到我的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!";
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个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
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 7

其实,你不能运行\copy通过pg_query().它不是SQL命令.它是psql客户端的元命令.

你可以在那里执行:

\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'
Run Code Online (Sandbox Code Playgroud)

或者运行shell命令:

psql mydb -c "\copy data1 FROM 'data1.txt'
                WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"
Run Code Online (Sandbox Code Playgroud)

注意引号.值必须在PostgreSQL中单引号:'value'.
双引号用于标识符 - 仅对具有大写或非法字符的标识符或保留字实际需要:"My table".