使用shell脚本在postgresql中插入列时出错?

使用shell脚本在postgresql中插入列时出错?,postgresql,shell,unix,amazon-ec2,amazon-redshift,Postgresql,Shell,Unix,Amazon Ec2,Amazon Redshift,下面是我的shell脚本,我正在尝试使用shell脚本在posrgresql中插入列。 但在误差以下。 脚本: i='dcm_account494401_click_2017050511_20170505_093843_556195422.csv.gz' load_date='2017-05-12' load_status='Fail' message="INFO: Load into table 'stg_ft_raw_activity' completed, 362

下面是我的shell脚本,我正在尝试使用shell脚本在posrgresql中插入列。 但在误差以下。 脚本:

i='dcm_account494401_click_2017050511_20170505_093843_556195422.csv.gz'
    load_date='2017-05-12'
    load_status='Fail'
    message="INFO:  Load into table 'stg_ft_raw_activity' completed, 362554 record(s) loaded successfully.
    INFO:  Load into table 'stg_ft_raw_activity' completed, 1 record(s) were loaded with replacements made for ACCEPTINVCHARS. Check 'stl_replacements' system table for details.
    "
    psql "host=$HOST  port=$DBPORT dbname=$DBNAME user=$DBUSER password=$DBPASS" -F  --no-align    <<EOF
    truncate table  stg.notification_table;
    \set fname $i

\set load_date $load_date
\set load_status $load_status
\set message $message

insert into  stg.notification_table values (:'fname', :'load_date', :'load_status',:"message");
    EOF
消息列是字符串值,还包含spl字符。这是原因吗

请帮忙解决。
Thansk,

无需将这些变量与
\set
一起使用

以下是一个例子:

message="INFO:  Load into table 'stg_ft_raw_activity' completed, 362554 record(s) loaded successfully.
INFO:  Load into table 'stg_ft_raw_activity' completed, 1 record(s) were loaded with replacements made for ACCEPTINVCHARS. Check 'stl_replacements' system table for details.
"

psql <<EOF
INSERT INTO message_table VALUES (\$\$$message\$\$);
EOF
message=“INFO:加载到表'stg\u ft\u raw\u activity'中已完成,已成功加载362554条记录。
信息:加载到表“stg\u ft\u原始\u活动”中已完成,1条记录加载了为ACCEPTINVCHARS所做的替换。有关详细信息,请查看“stl\u替换”系统表。
"

psql无需将这些变量与
\set
一起使用

以下是一个例子:

message="INFO:  Load into table 'stg_ft_raw_activity' completed, 362554 record(s) loaded successfully.
INFO:  Load into table 'stg_ft_raw_activity' completed, 1 record(s) were loaded with replacements made for ACCEPTINVCHARS. Check 'stl_replacements' system table for details.
"

psql <<EOF
INSERT INTO message_table VALUES (\$\$$message\$\$);
EOF
message=“INFO:加载到表'stg\u ft\u raw\u activity'中已完成,已成功加载362554条记录。
信息:加载到表“stg\u ft\u原始\u活动”中已完成,1条记录加载了为ACCEPTINVCHARS所做的替换。有关详细信息,请查看“stl\u替换”系统表。
"

psql感谢您的回复laurenz。是的,如果我们使用vmessage变量并输入字符串,则您的回答正确,我们可以使用美元报价。但如果我从日志文件中得到相同的消息,则意味着我应该正确使用/设置。例如:/set message
cat log.txt
我在这里也遇到了同样的错误。如何解决这个问题。如果我错了,请纠正我。我不明白。你能详细解释一下吗?为什么需要
\set
?echo-e“今天没有新的DCM文件$logdate”>$psql\u fail\u log.log status=“找不到文件”duplicate\u flag=0 psql“host=$host port=$DBPORT dbname=$dbname user=$DBUSER password=$DBPASS”-没有自动使用对齐扩展显示。错误:在“消息”第1行或附近出现语法错误:消息今天没有新的DCM文件17-05-17当我在指导后运行上述脚本时,我收到语法错误(上面的命令),感谢您的回复laurenz。是的,如果我们使用vmessage变量并输入字符串,则您的回答正确,我们可以使用美元报价。但如果我从日志文件中得到相同的消息,则意味着我应该正确使用/设置。例如:/set message
cat log.txt
我在这里也遇到了同样的错误。如何解决这个问题。如果我错了,请纠正我。我不明白。你能详细解释一下吗?为什么需要
\set
?echo-e“今天没有新的DCM文件$logdate”>$psql\u fail\u log.log status=“找不到文件”duplicate\u flag=0 psql“host=$host port=$DBPORT dbname=$dbname user=$DBUSER password=$DBPASS”-没有自动使用对齐扩展显示。错误:“消息”第1行或附近出现语法错误:消息今天没有新的DCM文件17-05-17当我在指导后运行上述脚本时,我收到语法错误(上面的命令)您实际使用的是Postgresql还是红移?它们是相关的,但有很多不同之处。您实际使用的是Postgresql还是红移?它们是相关的,但有许多不同之处。