Oracle SQL*Loader - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Oracle SQL*Loader

Oracle SQL*Loader 非常适用于对象数量有限的大型数据库。对于架构而言,从源数据库导出及加载到目标数据库所涉及的过程非常有针对性,因此,采用以下示例来说明创建示例架构对象、从源数据库导出、然后加载到目标数据库等过程。

要下载 Oracle SQL*Loader,请转到 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

  1. 使用以下命令创建示例源表。

    CREATE TABLE customer_0 TABLESPACE users AS (SELECT ROWNUM id, o.* FROM ALL_OBJECTS o, ALL_OBJECTS x WHERE ROWNUM <= 1000000);
  2. 在目标 Amazon RDS 实例上,创建用于加载数据的目标表。子句 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