将Oracle RDS表数据下载到本地数据库



我有一个Amazon Oracle RDS数据库。我想导出RDS表并将其导入到我的本地数据库中。踢者是它包括一个NCLOB列。本地系统是win10运行cygwin。

我运行expdp以捕获数据:

$ expdp xlat@int_rds/*****tables=TEXT_POOL_XLAT file=int_TEXT_POOL_XLAT.expdp
Export: Release 11.2.0.1.0 - Production on Mon Feb 18 11:37:30 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
Legacy Mode Active due to the following parameters:
Legacy Mode Parameter: "file=int_TEXT_POOL_XLAT.expdp" Location: Command Line, Replaced with: "dumpfile=int_TEXT_POOL_XLAT.expdp"
Legacy Mode has set reuse_dumpfiles=true parameter.
Legacy Mode has set nologfile=true parameter.
Starting "XLAT"."SYS_EXPORT_TABLE_01":  xlat/********@int_rds tables=TEXT_POOL_XLAT dumpfile=int_TEXT_POOL_XLAT.expdp reuse_dumpfiles=true nologfile=true
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 51.68 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "XLAT"."TEXT_POOL_XLAT"                     32.50 MB  137850 rows
Master table "XLAT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for XLAT.SYS_EXPORT_TABLE_01 is:
  /rdsdbdata/datapump/int_TEXT_POOL_XLAT.expdp
Job "XLAT"."SYS_EXPORT_TABLE_01" successfully completed at Mon Feb 18 17:37:29 2019 elapsed 0 00:00:04

到目前为止一切都很好。expdp将文件转储到oracle data_pump_dir中,我使用脚本将数据下载使用SQLPLUS命令:

sqlplus -s $DBusername/$DBpassword@$database >/dev/null <<EOF 
set colsep ,
set pagesize 0
set trimspool on
set headsep off
set linesize 8000
set termout off
SET FEEDBACK OFF
spool $filename $append
select * from table (rdsadmin.rds_file_util.read_text_file(p_directory => 'DATA_PUMP_DIR', p_filename  => '$DPfilename'));
quit
EOF

数据下载。但是当我运行IMPDP时,我会得到:

$ impdp xlat/f0nature1931@local tables=TEXT_POOL_XLAT dumpfile=int_TEXT_POOL_XLAT.expdp directory='DATA_PUMP_DIR'
Import: Release 11.2.0.1.0 - Production on Mon Feb 18 11:58:32 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Personal Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31619: invalid dump file "C:appwaynej/admin/orcl/dpdump/int_TEXT_POOL_XLAT.expdp"

我想念什么吗?我认为这不是CR/LF问题,因为脚本下载没有任何翻译。

预先感谢。

rds过程rdsadmin.rds_file_util.read_text_file读取文本文件。expdp dump文件不是文本文件,它是 binary 文件。

禁止使用RDS实例的文件访问。仅通过DB_LINK访问DATA_PUMP_DIR目录并使用DBMS_FILE_TRANSFER软件包。

  1. 在RDS DB和您的本地之间的RDS实例上创建数据库链接oracle。
  2. 将转储文件从RDS实例复制到本地Oracle DB使用DBMS_FILE_TRANSFER.PUT_FILE通过数据库链接
  3. 将转储文件导入本地数据库 impdp xlat/f0nature1931@local tables=TEXT_POOL_XLAT dumpfile=int_TEXT_POOL_XLAT.expdp directory='DATA_PUMP_DIR'

如果您没有机会在本地数据库和RDS Oracle之间建立链接,则可以以两种方式导出数据。

1 您可以使用本地PC上的旧exp实用程序进行数据导出,该实用程序还可以创建导出文件.dmp,但以不同的格式。该格式与IMPDP ExpDP不兼容。EXP IMP实用程序可以通过SQL*NET网络连接到目标数据库作为客户端服务器。该实用程序已过时,性能较低。DMP文件不是在服务器上创建的,例如运行实用程序EXPDP时。DMP文件写在运行实用程序EXP(服务器或客户端)

的侧面
$ORACLE_HOME/bin/exp parfile=parfile_exp_full FILE=export.dmp LOG=export.log

,然后使用IMP将数据导入到本地Oracle实例。

$ORACLE_HOME/bin/imp parfile=parfile_imp_full FILE=export.dmp LOG=import.log

2

您可以使用SQLPLUS

将数据导出到CSV文件
$ORACLE_HOME/bin/sqlplus -s user/pass@rds_amazon  @csv2.sql.
more csv2.sql 
set heading off
set termout OFF
SET FEEDBACK OFF
SET TAB OFF
set pause off
set verify off
SET UNDERLINE OFF
set trimspool on
set echo off
set linesize 1000
set pagesize 0
set wrap off
spool test2.csv
select code||','||name||','||code_rail from alexs.all_station;
spool off
exit;

,然后使用实用程序SQLLDR或SQL开发人员将数据导入到本地Oracle实例。

SQL开发人员从Excel导入

相关内容

  • 没有找到相关文章

最新更新