透過 SQL*Plus(9iR2) COPY 命令可以直接在不同資料庫間複製表格內容,支援模式如下:
- 由本地資料庫至遠端資料庫 (預設)
- 由遠端資料庫至本地資料庫
- 由遠端資料庫至遠端資料庫
來源表格欄位支援以下資料型態:CHAR、DATE、LONG、NUMBER、VARCHAR2,但不支援 LOB 這類資料型態。
SQL*Plus COPY 語法
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query
參數說明:
FROM database | 指定資料來源資料庫 |
TO database | 指定目標資料庫 |
database | 以 username[/password] @connect_identifier 格式指定 |
APPEND | 會直接將複製資料INSERT至指定目的表格,如果指定目的表格不存在會先建立指定目的表格。 |
CREATE | 複製資料前會先建立指定目的表格,如果指定目的表格已經存在會傳回錯誤訊息。 |
INSERT | 如果指定目的表格已經存在會傳回錯誤訊息,使用這個選項必須指定欄位名稱。 |
REPLACE | 如果指定目的表格已經存在會刪除舊有的表格,如果不存在則複製資料前會建立表格。 |
destination_table | 指定目的表格名稱。 |
(column, column, column, ...) | 以逗點隔開的目的表格的資料欄別名。 |
USING query | 任何有效的 SQL SELECT 敘述句。 |
通常 COPY 指令是用於 Oracle 和 non-Oracle 資料庫間的表格複製,因此如果同樣是在 ORACLE,應該使用 SQL 指令 (CREATE TABLE AS 和 INSERT) 。
Usage:
To enable the copying of data between Oracle and non-Oracle databases, NUMBER columns are changed to DECIMAL columns in the destination table. Hence, if you are copying between Oracle databases, a NUMBER column with no precision will be changed to a DECIMAL(38) column. When copying between Oracle databases, you should use SQL commands (CREATE TABLE AS and INSERT) or you should ensure that your columns have a precision specified.
The SQL*Plus SET LONG variable limits the length of LONG columns that you copy. If any LONG columns contain data longer than the value of LONG, COPY truncates the data.
SQL*Plus performs a commit at the end of each successful COPY. If you set the SQL*Plus SET COPYCOMMIT variable to a positive value n, SQL*Plus performs a commit after copying every n batches of records. The SQL*Plus SET ARRAYSIZE variable determines the size of a batch.
Some operating environments require that service names be placed in double quotes.
範例:
COPY FROM HR/your_password@HQ TO JOHN/your_password@WEST REPLACE WESTEMPLOYEES USING SELECT * FROM EMPLOYEES
參考文件:
SQL*Plus User's Guide and Reference Release 9.2:Part Number A90842-01:APPEND B:SQL*Plus COPY Command
沒有留言:
張貼留言