主要是 需要将 正式环境的数据库 和测试环境的数据库的 表 数据同步一下,方便测试。 这样的效果, 可以使用 数据库的 备份 , exp imp 等其他的方式, 可是这样的方式, 需要 在 电脑里面 安装 oracle 客户端, 本人比较懒。 所以 就使用这样的方式了。 其实 速度不慢, 而且 简单快速
-- 创建 连接 create database link dblink_newTest connect to bms identified by bms using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.12.21.81)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) ) )'; -- SELECT * FROM HR_EFF_LEADER_HI@dblink_newTest 远程查询 其他库的 数据 --备份, 需要将 原来的表的数据 删除 (看具体情况) INSERT INTO HR_EFF_LEADER_HI SELECT * FROM HR_EFF_LEADER_HI@dblink_newTest
我测试过了 , 如果想 要 多表 的 话, 百度 一下 , 没有 解决的办法。。。反正目前我是不知道 有什么多表的方式。
我的想法是:
-- 多表 INSERT INTO HR_EFF_LEADER_HI,HR_EFF_LEADER SELECT * FROM HR_EFF_LEADER_HI,HR_EFF_LEADER@dblink_newTest -- 模糊查询表名,然后 循环 -- 将 对应的表的 内容 给 删除 -- 然后 执行 单表的 备份 即可。 select table_name from user_tables where table_name like '%HR_EFF_LEADER%'
因为单表 可以解决, 如果是 多表的话, 自己可以 写一个 数据库的函数, 模糊查询出来 或者 定义的函数 需要迁移的某些 表, 然后 循环 执行 单表的 上面的 数据迁移的方式即可。 或者 说 使用 程序 Java 或者其他语言也可以的。如果不需要 写 数据库 的自定义函数的话。
本人 从来没有 试过些 sql 函数, 虽然看得懂别人的函数, 可是自己写,搞了半天 都 报语法错误, sql的 函数 出错了,调试 很麻烦, 错误提示 很难理解 。 反正我是 使用 Java代码 写一个 方法 多表 执行的, 而且 可以 很方便 的 写 一些 自己想要的效果, 如果用sql函数,头疼啊。。。DBA 或者大神 可以 自己 写sql函数啊, 应该更快吧。。