免费注册 查看新帖 |

Chinaunix

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

copy(数据的导入导出)有没有替换的方法 很有挑战性的哟 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-19 19:24 |只看该作者 |倒序浏览
本帖最后由 hydakesu 于 2011-07-19 19:25 编辑

我知道可以用COPY做数据的导入导出,但是COPY命令需要数据库超级权限。
如果没有数据库超级权限,有没有别的可以使用的数据导入导出方法。

还有一问,我想在同一个事物中实现1,建立临时表。
                                2,向临时表注入数据。(之前用COPY,但是在sp中实现不可,因为要有数据库超级权限)
                                3,读取临时表的数据在进行处理。(使用sp实现的,临时表要还存在呀,又不就不行啦)。


路过的神仙,一定指点一下呀。。

论坛徽章:
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
2 [报告]
发表于 2011-07-20 09:37 |只看该作者
1. 把 copy.c 中的  if (!pipe && !superuser()) 下面的报错注释掉,重新编译 PostgreSQl

2. 建一个有超级权限的用户 CREATE USER UA WITH SUPERUSER;
或修改用户使其具有超级权限  ALTER USER UA WITH SUPERUSER;

论坛徽章:
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
3 [报告]
发表于 2011-07-20 12:27 |只看该作者
哇。厉害。呵呵。我不会C,不干研读。

论坛徽章:
0
4 [报告]
发表于 2011-07-20 13:24 |只看该作者
本帖最后由 hydakesu 于 2011-07-20 13:26 编辑

谢谢各位的帮助,asdf2110的方法我没有怎么看懂,不过问题已经解决啦。
共有给那些不用超级用户但是和可以使用COPY命令的兄弟。
一下是我的代码:
psql -U ${DB_USER} ${INSTANCE_NAME} > ${SQL_PATH} <<__INPUT__
BEGIN TRANSACTION;
CREATE LOCAL TEMPORARY TABLE KAUT_TEMP_USER_INFO (SEQUENCE Serial,RECORD_TYPE VARCHAR(7),DATA_TYPE VARCHAR(4),PERSONNEL_COMP_ID VARCHAR(2),ISSUE_TIME TIMESTAMP,
RECORD_COUNT VARCHAR(10), COMP_ID VARCHAR(10), EMPLOYEE_NO VARCHAR(7),USER_ID VARCHAR(9),EN_NM1 VARCHAR(60),EN_NM2 VARCHAR(60), EN_NM3 VARCHAR(60),LOCAL_NM1 VARCHAR(60),
LOCAL_NM2 VARCHAR(60),LOCAL_NM3 VARCHAR(60),NM_SORT VARCHAR(60), MAIL_ADDR VARCHAR(80), EXTEN_TEL VARCHAR(1, EXTEN_FAX VARCHAR(1,OUTSIDE_TEL VARCHAR(1,
OUTSIDE_FAX VARCHAR(1, MAILBOX_NO VARCHAR(10), SUSPENSION_TYPE VARCHAR(1),RETIRE_TYPE VARCHAR(1),RETIRE_DATE TIMESTAMP) ON COMMIT DROP;

\COPY KAUT_TEMP_USER_INFO (RECORD_TYPE,DATA_TYPE,PERSONNEL_COMP_ID,ISSUE_TIME,RECORD_COUNT,COMP_ID,EMPLOYEE_NO,USER_ID,EN_NM1,EN_NM2,EN_NM3,LOCAL_NM1,LOCAL_NM2,LOCAL_NM3,NM_SORT,MAIL_ADDR,EXTEN_TEL,EXTEN_FAX,OUTSIDE_TEL,OUTSIDE_FAX,MAILBOX_NO,SUSPENSION_TYPE,RETIRE_TYPE,RETIRE_DATE)  from '/home/webuiuser/data/recv/temp_user_info_5.tsv' null '';

select ifms0041(${PERSONNEL_DATA_ID},${DATA_CATEGORY},${COPY},${NEXT_TP_NO},${INPUT_RUN_TYPE});

COMMIT TRANSACTION;

__INPUT__

在同一个事物中,实现啦临时表的建立,导入数据,以及启动sp进行处理。
以上代码为sh代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP