sql - 不明白语法错误在哪里?PostgreSQL 11
问题描述
PostgreSQL 版本:11.1 平台:OSX Mojave 10.14.1
这是我的 SQL 代码:
COPY (select nom,prenom,num_carte,pdv_carte,email,date_naissance from compte where num_carte != '' order by id_compte) TO :export_file WITH DELIMITER AS ';' CSV FORCE QUOTE * ENCODING 'UTF-8';
该行位于由 shell 脚本调用的 .sql 文件中,如下所示:
psql --dbname=test -U postgres --set adresses=$DATA_ADRESSE --set export_file="$EXPORT_FILE" --file=$ANO_SQL 1>>$ANO_LOG
使用 EXPORT_FILE 变量声明如下:
export EXPORT_FILE="'export_for_fid.csv'"
尝试了许多解决方案,但都没有奏效,总是出现相同的语法错误:
ERROR: syntax error at or near ""
LINE 1: ...where num_carte != '' order by id_compte) TO 'export_for_fid.csv' WITH D...
^
解决方案
除了使用 --file 和 --set 参数,您可以在 shell 脚本中使用 here-document:(注意:我用 a 替换COPY
了\COPY
)
#!/bin/sh
EXPORT_FILE="export_for_fid.csv"
DB_NAME="test"
psql --dbname=${DB_NAME} -U postgres <<OMG
\COPY (select nom,prenom,num_carte,pdv_carte,email,date_naissance from compte where num_carte <> '' order by id_compte) TO '${EXPORT_FILE}' WITH DELIMITER AS ';' CSV FORCE QUOTE * ENCODING 'UTF-8';
OMG
#eof
推荐阅读
- amazon-web-services - 不健康的目标群体 NLB
- java - 尽管使用背景半径,JavaFX CSS 按钮背景图像仍会覆盖整个按钮
- r - 使用闪亮的 R 使用 split() 函数动态显示 n 个表(问题已解决,谢谢)
- c++ - 一维数组对二维数组的大小影响
- azure - 无法让 Azure 认知服务访问我的 blob 容器
- javascript - 如何将 JavaScript 变量传递给 Django 变量
- azure - 如何在 Azure VM 中自动模拟故障
- linux - 如何使用更少的代码将文件列表传递给 bash 脚本
- node.js - QR Scanner npm 库为 chrome 抛出错误
- python-3.x - 仅计算匹配字符串的平均值