免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5074 | 回复: 5
打印 上一主题 下一主题

求助,copy命令中的文件名用参数传入的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-28 14:13 |只看该作者 |倒序浏览
希望在存储过程中调用copy命令,如下:

CREATE OR REPLACE FUNCTION func_make_file(filefullname text)
  RETURNS boolean AS
$BODY$

BEGIN

          cpoy my_table to filefullname with CSV;

END;
$BODY$

  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION func_make_file(filefullname text) OWNER TO postgres;
   
增加函数时报错:
ERROR:  syntax error at or near "cpoy"
LINE 1: cpoy my_table to  $1  with CSV
        ^
QUERY:  cpoy my_table to  $1  with CSV
CONTEXT:  SQL statement in PL/PgSQL function "func_make_file" near line 4


好像是在语法检查的时候,必须认   

cpoy my_table to 'filefullpath' with CSV;

这样的格式。

有什么办法实现这个吗,在线等。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2011-08-28 21:44 |只看该作者
没实践地。

论坛徽章:
4
丑牛
日期:2014-09-15 09:28:12双子座
日期:2014-12-19 17:01:192015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-06-28 06:20:00
3 [报告]
发表于 2011-08-31 15:18 |只看该作者
本帖最后由 tanfeng3 于 2011-08-31 15:20 编辑

在PG里需要超级权限才能将表数据导出到文件, 如果是普通用户,只能导出到 stdout .

如果是同步数据,建议用 shell 去定期实现。

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-08 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-09-18 06:20:00数据库技术版块每周发帖之星
日期:2015-11-06 19:56:51数据库技术版块每日发帖之星
日期:2016-01-22 06:20:00数据库技术版块每日发帖之星
日期:2016-02-05 06:20:00
4 [报告]
发表于 2011-09-05 15:15 |只看该作者
COPY写错了,写成 CPOY 了

CREATE OR REPLACE FUNCTION func_make_file(filefullname text)
RETURNS boolean AS
$BODY$
BEGIN
        execute 'copy t to ''' || filefullname ||'''';
        return 1;
END;
$BODY$
LANGUAGE plpgsql;

论坛徽章:
0
5 [报告]
发表于 2011-09-08 23:53 |只看该作者
copy不小心写错了,之前写对过的,问题是一样的。

用你给的函数就可以了,但是不知道为什么下面这样就不行:

CREATE OR REPLACE FUNCTION func_make_file(filefullname text)
RETURNS boolean AS
$BODY$
BEGIN
        copy test to ''' || filefullname ||''';
        return 1;
END;
$BODY$
LANGUAGE plpgsql;

函数定义可以成功,但是执行不对。

论坛徽章:
0
6 [报告]
发表于 2011-10-07 22:59 |只看该作者
来支持一下了,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP