Oracle学习 第23天 Oracle视图、表、SqlServer、excel、csv的互导

本文详细记录了将远程Oracle服务器上的视图转换为本地Oracle服务器表的过程,包括使用SqlServer作为中间工具进行数据导出、处理及导入所遇到的问题与解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折腾了一晚,就弄了一张表。。。具体情况:远程Oracle上有一张视图,要弄回到公司服务器Oracle变成一张表

 

1、PL/SQL的导出

发现导出按钮灰色,找了一下Oracle客户端目录下的exp.exe没找着,网上下载了一下还是不行

可能是版本不对,可能是环境没装好,可能是权限不足,总之没法导出

 

2、打开服务器上的SqlServer,SELECT * FROM OPENQUERY(xx, 'SELECT * FROM x'),像普通表一样查出来,全选,右键,导出csv

 

3、导出的csv只有数据,没有表头(SQL 2005),只能SELECT INTO xx FROM (SELECT * FROM OPENQUERY(xx, 'SELECT * FROM x WHERE ROWNUM = 1')) T

生成一张表,然后生成建表脚本,拿到oracle去执行,让它报错,报一个改一个,批量替换成oracle的类型(如varchar2之类)

 

4、csv是逗号隔开的,要先用excel导入文本,把逗号作为分隔符变成一列一列

 

5、excel想导入PL/SQL,Data From TextFile,提示类似版本不对的东西,查了一下,系统是64位,ODBC是32位

 

6、要装64位的驱动,说已装了32位office,无法继续。只能先卸载了office,装64位驱动,再装office(仍是原先的)又可以

 

7、导入excel,发现原先导出的csv只有数据,没有表头,要在DataToOracle里一列列对应,几十列,对了一半,发现上下错位了一行,终于放弃

 

8、既然有表,那就SELECT * FROM xx FOR UPDATE;然后点编辑,复制数据进去

一开始复制错了,复制那种逗号分隔的源数据,卡死崩溃(也就一万两千行)

 

9、选中第一行第一列,复制列分隔的数据,卡死崩溃

 

10、选中第一列,复制粘贴,终于可以了,保存时提示NULL不能保存给DATE之类,明明是可空啊

 

11、把每列都改成varchar2算了,保存修改列,不成功,因为刚才复制数据还未提交。。。

 

12、全变成字符型的列,把数据复制进来,发现有些2-7这种格式,在转excel时变成【2月7号】了。。。转excel时要选文本

 

13、再从头弄一次,终于可以了

 

14、后来发现,直接SELECT * FROM XX出来的SqlServer结果集里,全选,直接就可以复制,不用转成csv弄来弄去的。

但这是放在剪切版里的,数据太大不合适,csv或excel比较通用

 

虽然绕了很多弯路,也摸索了一些门路,熟悉了套路。

Oracle的视图要转成表(因为换成另外服务器上,视图就没意义了),但没有权限又不能建表,只能用SqlServer中转

表结构最好能直接生成,不要弄个建表脚本。因为虽然是视图,终归是其它表的相应字段,也是有类型的

服务器之间不直接互通,不然也可以SELECT INTO之类的

 

Oracle还是要多实践

转载于:https://www.cnblogs.com/liuyouying/p/6436079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值