我需要编写一个数据迁移脚本。需要使用join从某些表读取记录并将它们迁移到另一个表驻留在不同的模式中。我正在使用Oracle数据库11g。现在只有30000多条记录。 通过浏览Google,我遇到了一些术语,如PL / SQL,存储过程或使用ORM或任何脚本语言的独立应用程序。 我只想知道哪一个是编写迁移脚本的最有效方法,以及选择背后的确切优缺点。 请原谅我的英文!如果这个问题看起来多余而且无聊! .. :) 寻求你的建议。 谢谢
答案 0 :(得分:1)
传输的数据不是太多;我尝试使用INSERT
覆盖数据库链接;像这样的东西:
create database link dbl_rookie
connect to remote_user
identified by its_password
using 'tns_admin alias for the remote database';
insert into remote_table@dbl_rookie
(id, name, address, phone)
(select a.id, b.name, b.address, a.phone
from person a join details b on a.id = b.id
where cb_active = 1
);
除非我写错字,否则就会那么简单。
或者,您可以使用我在上面编写的相同SELECT
语句使用 CTAS (创建表格选择)创建表格,如
create table to_be_moved as
select a.id, b.name, ...;
导出它此处(使用原始EXP实用程序,因为它在本地创建DMP文件)并导入那里(使用IMP效用)。如果您需要其他帮助,请说明。
或者,您甚至可以将<{1}}语句的结果压缩到TXT文件中,然后使用SQL * Loader实用程序将其加载到远程数据库中。
正如您所看到的,有很多选择,我们甚至没有放弃纯SQL(更不用说其他人可能建议的其他选项)。