使用php将txt文件导入postgres时出现问题
I am trying to import a txt/csv file into my postgres database from php using "\copy" command. I cannot use COPY instead of \copy as I need it to execute as a psql client. My code is:
$query = '\\'.'copy data1 FROM "data1.txt" WITH CSV HEADER DELIMITER AS "," QUOTE AS "^"';
$result = pg_query($conn,$query);
if (!$result) {
echo "cannot copy data
";
} else {
echo "SUCCESS!";
}
When I run this php file, I get this error:
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”命令从php导入txt / csv文件到我的postgres数据库中。 我不能使用COPY而不是\ copy,因为我需要它作为psql客户端执行。 我的代码是: p>
$ query ='\\'。'copy data1 FROM“data1.txt”WITH CSV HEADER DELIMITER AS“,”QUOTE AS“^”';
$ result = pg_query($ conn,$ query);
if(!$ result){
echo“无法复制数据
”;
}其他{
echo“SUCCESS!”;
}
code> pre>
当我运行这个php文件时,我收到此错误: p>
PHP警告:pg_query() :查询失败:错误:语法错误在“\”
LINE 1处或附近:\ copy data1 FROM“data1.txt”WITH ...
^在第30行的script.php
code> pre >
div>
Actually, you cannot run \copy
via pg_query()
. It is not an SQL command. It is a meta-command of the psql client.
There you can excute:
\copy data1 FROM 'data1.txt' WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'
Or run the shell-command:
psql mydb -c "\copy data1 FROM 'data1.txt'
WITH CSV HEADER DELIMITER AS ',' QUOTE AS '^'"
Note the quotes. Values need to be single-quoted in PostgreSQL: 'value'
.
Double-quotes are for identifiers - and are only actually needed for identifiers with upper case or illegal character or for reserved words: "My table"
.