求助:plsql如何将一条sql语句的执行结果生成Object selection的文件(后缀是. 50

求助:plsql如何将一条sql语句的执行结果生成Objectselection的文件(后缀是.osf)?... 求助:plsql如何将一条sql语句的执行结果生成Object selection的文件(后缀是.osf)? 展开
 我来答
qjs342425
2018-05-15
知道答主
回答量:3
采纳率:0%
帮助的人:3151
展开全部
更换导出方式为,Tools=>Export Tables=>PL/SQL Developer(不使用SQL Inserts是因为该选项导出数据量小没问题,但数据量大时效率非常低,尤其是在B库上导入时,耗时更久,而且容易卡死)。结果发现在编译过程中也报错了“stream read error”,查找原因发现是因为导出的部分表中有大字段(CLOB或BLOB),而PL/SQL Developer并不支持大字段数据类型。所以,必须先把含有大字段的表找出来,可使用系统表ALL_TAB_COLUMNS,SQL如下:
SELECT DISTINCT t.TABLE_NAME
FROM SYS.ALL_TAB_COLUMNS t
WHERE t.TABLE_NAME NOT LIKE 'BIN%'
AND t.OWNER = ‘USER_NAME’
AND t.DATA_TYPE IN ('CLOB', 'BLOB')
ORDER BY t.TABLE_NAME;
注意,USER_NAME是导出用户的用户名,需要更改。
若需要导出的表较少,有大字段的表也不多,则可以手工按shift配合ctrl来选择要导出的不带大字段的表。若要导出的表多,且有大字段的表也多,用手工选择表的方式就比较麻烦了,可以使用PL/SQL自带的Object Selection功能。
1)使用SQL语句拼出Load Object Selection所需文件内容,SQL如下:
SELECT DISTINCT ('TABLE "' || t.OWNER || '"."' || t.TABLE_NAME || '"')
FROM SYS.ALL_TAB_COLUMNS t
WHERE t.TABLE_NAME NOT LIKE 'BIN%'
AND t.OWNER = 'USER_NAME'
AND t.DATA_TYPE NOT IN ('CLOB', 'BLOB');

注意,USER_NAME是导出用户的用户名,需要更改。
2)编辑osf文件,在Tools=>Export Tables=>PL/SQL Developer的选择框里随便选择一个表,右键=>Save Object Selection,选择文件存放位置,然后生成文件。
使用文本编辑工具(如UltraEdit)打开osf文件,将上面SQL语句的结果粘贴进文件,然后保存。osf文件内容样式如下:
PL/SQL Developer Object Selection File
1
TABLE "SCOTT"."EMP"
TABLE "SCOTT"."DEPT"
3)在选择框里,右键=>Load Object Selection,然后选择上面做成的osf文件,然后就会发现,想要导出的且不包含大字段的表已经被选中了,然后在右下Export前选择导出文件的位置及命名文件,然后点Export就可以等待文件导出了。若导出的表较多,该步可能耗时较长。
ahua0597
2017-07-19 · TA获得超过107个赞
知道小有建树答主
回答量:303
采纳率:50%
帮助的人:149万
展开全部
.osf文件是什么文件?如果只是平面文件的话可以用spool生成
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式