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

折腾了一晚,就弄了一张表。。。具体情况:远程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