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

标签 php postgresql file-io postgresql-copy

我正在尝试使用“\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

最佳答案

您不能通过pg_query() 运行\copy。它不是 SQL 命令。它是 psql client 的元命令.

在那里你可以执行:

\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 '^'"

注意引号。值需要为 single-quoted in PostgreSQL : '值'.
双引号用于标识符 - 实际上只有大写或非法字符的标识符或保留字才需要:"My table"

关于php - 使用 php 将 txt 文件导入 postgres 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869067/

相关文章:

javascript - jQuery-File-Upload (blueimp) - 如何访问 JS 端和 PHP 中的错误值

php - session 变量未重置

postgresql - 使用一些数据初始化 PostgreSQL docker 容器的最佳实践

postgresql - Docker-compose postgresql密码验证失败

java - 使用Java的PostgreSQL上的Money数据

php - mysqli 对象如何获取字段

c - 在最后写入的行之后,我希望它声明文件结尾而不是生成新行

python - 编译后的 Python 写入程序文件

c++ - freopen() 的 Python 版本

php - 升级到 Laravel 5.4 后排队的 Laravel 排队作业运行两次