use*_*905 -3 postgresql dynamic-sql plpgsql copy
我想使用COPY
Postgres 中的函数将数据发送到 .csv 文件。但我使用匿名块,所以我的表名应该是变量的值。
COPY (SELECT cname.portal from user) To '/tmp/out.csv' With CSV;
Run Code Online (Sandbox Code Playgroud)
cname
我的匿名块内的变量在哪里。我尝试使用EXECUTE
格式,但它也不起作用。我试过类似的东西:
EXECUTE format (' COPY (select * from %s.portal,cname ) To '/tmp/out1.csv' With CSV');
Run Code Online (Sandbox Code Playgroud)
在 plpgsql 代码中(不是纯 SQL!):
EXECUTE format($$COPY (select * from %I.portal) TO '/tmp/out1.csv' WITH CSV$$, cname);
Run Code Online (Sandbox Code Playgroud)
cname
是保存(尚未转义)模式名称的变量。
你需要明白:
如果您正在使用$
具有特殊含义的客户端处理此问题,则需要正确转义它。作为快速修复,您可以切换到:
EXECUTE format('COPY (select * from %I.portal) TO ''/tmp/out1.csv'' WITH CSV', cname);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6313 次 |
最近记录: |