首页 > 解决方案 > 不明白语法错误在哪里?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...
                                                       ^

标签: sqlpostgresqlshellsyntax-errorpsql

解决方案


除了使用 --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

推荐阅读