Oracle:如何有效地将 table 从一个模式复制到不同数据库和服务器上的另一个模式
Oracle: How to efficiently copy a table from one schema to another on a different database and server
我有一个很大的 table(3.5MM 记录)需要从一个 schema/database 复制到另一个 schema/database。我尝试了 TOAD 从 table 复制数据的功能,但出现错误并且它从未完全复制,部分原因是连接不断断开。我正在尝试 SQLDeveloper 的对象复制功能,11 分钟后,它仍在复制。我尝试了 SQLPlus COPY 语句但出现语法错误(需要帮助)。我仍然愿意将数据提取为 INSERT 语句,我可以直接 运行。
1) SQLPLUS 复制如下:
copy from report_new/mypassword@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=10.15.15.20)(PORT=1541))(CONNECT_DATA=(SERVICE_NAME=STAGE))) to report/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.18.22.25)(PORT=1550))(CONNECT_DATA=(SERVICE_NAME=DEV))) CREATE USER_USAGE_COUNT USING SELECT * FROM _USER_USAGE_COUNT
以上给了我
SQL> start copy_user_count_table.sql
SP2-0758: FROM clause missing username
2) 我试过 TOAD
由于连接获取,TOAD "Copy data to another schema" 失败
下降。我先将提交阈值设置为 5000,然后再设置为 500。
3) 我正在尝试 SQLDeveloper 的复制功能,但我认为它不会很快完成,而且它没有给我真正的进度指示。据我所知,它可能会被挂起,但它只是不想告诉我。
4) 我想过创建一个数据链路,但我没有创建数据链路的权限,而且它是在 DBA 在 3 天内没有响应的公司环境中。
待办事项:我是否应该编写自己的 Java 代码来一次只执行一条记录??我不应该这样做,但不知何故,将一个人送上月球比将数据从一个模式复制到另一个模式更容易。
您可以使用 sqlcl
的复制命令,它是较新的 SQLdeveloper 版本的一部分。 sqlcl
位于 Sqldeveloper\bin
目录中,并命名为 sql.exe (Windows) 或 sql (Unix/Linux/Mac)。要遵循的步骤是:
- 使用 sqlcl
连接到目标数据库
sql username/password@destindationdb
- 使用复制命令
copy from username@sourcedatabase create newtablename using select * from sourcetable;
我有一个很大的 table(3.5MM 记录)需要从一个 schema/database 复制到另一个 schema/database。我尝试了 TOAD 从 table 复制数据的功能,但出现错误并且它从未完全复制,部分原因是连接不断断开。我正在尝试 SQLDeveloper 的对象复制功能,11 分钟后,它仍在复制。我尝试了 SQLPlus COPY 语句但出现语法错误(需要帮助)。我仍然愿意将数据提取为 INSERT 语句,我可以直接 运行。
1) SQLPLUS 复制如下:
copy from report_new/mypassword@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=10.15.15.20)(PORT=1541))(CONNECT_DATA=(SERVICE_NAME=STAGE))) to report/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.18.22.25)(PORT=1550))(CONNECT_DATA=(SERVICE_NAME=DEV))) CREATE USER_USAGE_COUNT USING SELECT * FROM _USER_USAGE_COUNT
以上给了我
SQL> start copy_user_count_table.sql
SP2-0758: FROM clause missing username
2) 我试过 TOAD 由于连接获取,TOAD "Copy data to another schema" 失败 下降。我先将提交阈值设置为 5000,然后再设置为 500。
3) 我正在尝试 SQLDeveloper 的复制功能,但我认为它不会很快完成,而且它没有给我真正的进度指示。据我所知,它可能会被挂起,但它只是不想告诉我。
4) 我想过创建一个数据链路,但我没有创建数据链路的权限,而且它是在 DBA 在 3 天内没有响应的公司环境中。
待办事项:我是否应该编写自己的 Java 代码来一次只执行一条记录??我不应该这样做,但不知何故,将一个人送上月球比将数据从一个模式复制到另一个模式更容易。
您可以使用 sqlcl
的复制命令,它是较新的 SQLdeveloper 版本的一部分。 sqlcl
位于 Sqldeveloper\bin
目录中,并命名为 sql.exe (Windows) 或 sql (Unix/Linux/Mac)。要遵循的步骤是:
- 使用 sqlcl 连接到目标数据库
sql username/password@destindationdb
- 使用复制命令
copy from username@sourcedatabase create newtablename using select * from sourcetable;