使用 Oracle SQL*Loader 匯入 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Oracle SQL*Loader 匯入

您可以考慮針對有數量物件限制的大型資料庫使用 Oracle SQL*Loader。因為此程序會從來源資料庫匯出並載入到目標資料庫,所以與結構描述非常相關;以下範例會建立範例結構描述物件、從來源匯出、然後將資料載入到目標資料庫。

安裝 Oracle SQL*Loader 最簡單的方法是安裝 Oracle Instant Client。若要下載該軟體,請前往 https://www.oracle.com/database/technologies/instant-client.html。如需說明文件,請參閱《Oracle 資料庫公用程式》手冊中的 SQL*Loader 即時用戶端、匯出和匯入

使用 Oracle SQL*Loader 匯入資料
  1. 使用下列 SQL 陳述式建立樣本來源資料表。

    CREATE TABLE customer_0 TABLESPACE users AS (SELECT ROWNUM id, o.* FROM ALL_OBJECTS o, ALL_OBJECTS x WHERE ROWNUM <= 1000000);
  2. 在目標 RDS for Oracle 資料庫執行個體上建立目標資料表,用於載入資料。子句 WHERE 1=2 確保您複製 ALL_OBJECTS 的結構,但不複製任何資料列。

    CREATE TABLE customer_1 TABLESPACE users AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED FROM ALL_OBJECTS WHERE 1=2);
  3. 將資料從來源資料庫匯出成為文字檔。下列範例使用 SQL*Plus。針對您的資料,您可能需要建立指令碼來執行資料庫中所有物件的匯出。

    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS' SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0 SPOOL customer_0.out SET MARKUP HTML PREFORMAT ON SET COLSEP ',' SELECT id, owner, object_name, created FROM customer_0; SPOOL OFF
  4. 建立控制檔案來描述資料。您可能需要撰寫指令碼來執行此步驟。

    cat << EOF > sqlldr_1.ctl load data infile customer_0.out into table customer_1 APPEND fields terminated by "," optionally enclosed by '"' ( id POSITION(01:10) INTEGER EXTERNAL, owner POSITION(12:41) CHAR, object_name POSITION(43:72) CHAR, created POSITION(74:92) date "YYYY/MM/DD HH24:MI:SS" )

    如有需要,請將先前程式碼產生的檔案複製到暫存區域,例如 Amazon EC2 執行個體中。

  5. 使用 SQL*Loader 和適當的目標資料庫使用者名稱與密碼來匯入資料。

    sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000