我是Oracle新手,我正在努力将特定数据从一台服务器上的数据库移动到另一台服务器上的数据库。
这两个数据库具有相同的模式,但我想拉出其键引用的特定列,并将数据移动到其他服务器中。我正试图弄清楚对此最好的攻击计划是什么。
一种允许命令行的方法,我可以输入我想要移动的数据的键。是否有可能用PLSQL脚本完成?
感谢。
答案 0 :(得分:8)
假设您可以在两个数据库之间创建网络连接,最简单的选择是在它们之间创建数据库链接,即
CREATE DATABASE LINK to_b
CONNECT TO username_on_b
IDENTIFIED BY password
USING 'tns_alias_for_b'
然后,您可以使用该数据库链接查询数据库B中的数据,即
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = <<some value>>;
这可以是直接的SQL语句,PL / SQL过程的一部分,也可以是SQL * Plus脚本的一部分。 PL / SQL过程
CREATE OR REPLACE PROCEDURE move_row_from_b(
p_key_value IN table_name.primary_key%type
)
AS
BEGIN
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = p_key_value;
END move_row_from_b;
可以通过EXEC从SQL * Plus或通过匿名PL / SQL块
调用SQL> exec move_row_from_b( 23 );
BEGIN
move_row_from_b( 23 );
END;
或者您可以编写SQL * Plus脚本
variable key_value number;
accept key_value prompt 'Enter key: '
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = :key_value;