搜档网
当前位置:搜档网 › [原创]Oracle数据导入导出(另exp和expdp对比)

[原创]Oracle数据导入导出(另exp和expdp对比)

[原创]Oracle数据导入导出(另exp和expdp对比)
[原创]Oracle数据导入导出(另exp和expdp对比)

本文包含exp/imp,expdp/impdp的使用说明和常用参数详解

另外包括一个有趣的测试

一、Oracle数据库EXP\IMP\EXPDP\IMPDP使用说明1.Exp数据导出

1.1.exp关键字说明

关键字说明(默认值)

------------------------------

USERID 用户名/口令

BUFFER 数据缓冲区大小

FILE 输出文件(EXPDAT.DMP)

COMPRESS 导入到一个区(Y)

GRANTS 导出权限(Y)

INDEXES 导出索引(Y)

DIRECT 直接路径(N) --直接导出速度较快

LOG 屏幕输出的日志文件

ROWS 导出数据行(Y)

CONSISTENT 交叉表的一致性(N)

FULL 导出整个文件(N)

OWNER 所有者用户名列表

TABLES 表名列表

RECORDLENGTH IO记录的长度

INCTYPE 增量导出类型

RECORD 跟踪增量导出(Y)

TRIGGERS 导出触发器(Y)

STATISTICS 分析对象(ESTIMATE)

PARFILE 参数文件名

CONSTRAINTS 导出的约束条件(Y)

OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理(N) FEEDBACK 每x 行显示进度(0)

FILESIZE 每个转储文件的最大大小

FLASHBACK_SCN 用于将会话快照设置回以前状态的SCN

FLASHBACK_TIME 用于获取最接近指定时间的SCN 的时间

QUERY 用于导出表的子集的select 子句

RESUMABLE 遇到与空格相关的错误时挂起(N)

RESUMABLE_NAME 用于标识可恢复语句的文本字符串

RESUMABLE_TIMEOUT RESUMABLE 的等待时间

TTS_FULL_CHECK 对TTS 执行完整或部分相关性检查

TABLESPACES 要导出的表空间列表

TRANSPORT_TABLESPACE 导出可传输的表空间元数据(N)

TEMPLATE 调用iAS 模式导出的模板名

1.2.常用的exp关键字举例

1、full用于导出整个数据库,在rows=n一起使用,导出整个数据库的结构。

如:exp userid=gwm/gwm file=/test.dmp log=test.log full=y rows=n direct=y

2、OWNER和TABLES,用于定义exp导出的对象

如:exp userid=gwm/gwm file=/test.dmp log=test.log owner=gwm table=(table1,table2)

3、buffer和feedback 若导出数据较大,考虑使用这两个参数。

如:exp userid=gwm/gwm file=/test.dmp log=test.log feedback=10000 buffer=100000000 tables=(table1,table2)

4、file和log 用于指定备份的dmp名称和log名称

5、compress 不压缩导出数据的内容,默认y

6、filesize 若导出的数据文件大,应该用该参数,限制文件大小不要超过2g

如:exp userid=gwm/gwm file=/test1,test2,test3,test4,test5 filesize=2G log=test.log

这样将创建test1.dmp,test2.dmp等,每个文件大小为2g。

1.3.exp导出实例

--数据库全备--

exp system/manger@link file=E:\file_name.dmp full=y direct=y log=E:\log_name.log

--可选择的备份数据库一些用户--

exp system/manger@link file=E:\file_name.dmp owner=(username1,username2) direct=y log=E:\log_name.log

--备份一个用户的数据--

exp username/password@link file=E:\file_name.dmp direct=y log=E:\log_name.log

2.Imp数据导入

imp关键字说明

关键字说明(默认值) 关键字说明(默认值)

-------------------------------------------------------------

USERID 用户名/口令FULL 导入整个文件(N)

BUFFER 数据缓冲区大小FROMUSER 所有者用户名列表

FILE 输入文件(EXPDAT.DMP) TOUSER 用户名列表

SHOW 只列出文件内容(N) TABLES 表名列表

IGNORE 忽略创建错误(N) RECORDLENGTH IO 记录的长度

GRANTS 导入权限(Y) INCTYPE 增量导入类型

INDEXES 导入索引(Y) COMMIT 提交数组插入(N)

ROWS 导入数据行(Y) PARFILE 参数文件名

LOG 屏幕输出的日志文件CONSTRAINTS 导入限制(Y)

DESTROY 覆盖表空间数据文件(N)

INDEXFILE 将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护(N)

FEEDBACK 每x 行显示进度(0)

TOID_NOVALIDATE 跳过指定类型ID 的验证

FILESIZE 每个转储文件的最大大小

STATISTICS 始终导入预计算的统计信息

RESUMABLE 在遇到有关空间的错误时挂起(N)

RESUMABLE_NAME 用来标识可恢复语句的文本字符串

RESUMABLE_TIMEOUT RESUMABLE 的等待时间

COMPILE 编译过程, 程序包和函数(Y)

STREAMS_CONFIGURATION 导入流的一般元数据(Y)

STREAMS_INSTANTIATION 导入流实例化元数据(N)

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导入可传输的表空间元数据(N)

TABLESPACES 将要传输到数据库的表空间

DATAFILES 将要传输到数据库的数据文件

TTS_OWNERS 拥有可传输表空间集中数据的用户

3.Expdp数据泵导出

3.1.EXPDP命令行选项

1. ATTACH

该选项用于在客户会话与已存在导出作用之间建立关联.语法如下

ATTACH=[schema_name.]job_name

Schema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:

Expdp scott/tiger ATTACH=scott.export_job

2. CONTENT

该选项用于指定要导出的内容.默认值为ALL

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLY

3. DIRECTORY

指定转储文件和日志文件所在的目录

DIRECTORY=directory_object

Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump

4. DUMPFILE

用于指定转储文件的名称,默认名称为expdat.dmp

DUMPFILE=*directory_object:+file_name *,….+

Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象

Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp

5. ESTIMATE

指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKS

ESTIMATE={BLOCKS | STATISTICS}

设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间

Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump

6. ESTIMATE_ONLY

指定是否只估算导出作业所占用的磁盘空间,默认值为N

EXTIMATE_ONLY={Y | N}

设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.

Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y

7. EXCLUDE(具体见2、Exclude导出用户中指定类型的指定对象)

该选项用于指定执行操作时释放要排除对象类型或相关对象

EXCLUDE=object_type*:name_clause+ *,….+

Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE 和INCLUDE不能同时使用

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

8. FILESIZE

指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)

9. FLASHBACK_SCN

指定导出特定SCN时刻的表数据

FLASHBACK_SCN=scn_value

Scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523

10. FLASHBACK_TIME

指定导出特定时间点的表数据

FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FL ASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”

11. FULL

指定数据库模式导出,默认为N

FULL={Y | N}

为Y时,标识执行数据库导出.

12. HELP

指定是否显示EXPDP命令行选项的帮助信息,默认为N

当设置为Y时,会显示导出选项的帮助信息.

Expdp help=y

13. INCLUDE(具体见1、Include导出用户中指定类型的指定对象)

指定导出时要包含的对象类型及相关对象

INCLUDE = object_type*:name_clause+ *,… +

14. JOB_NAME

指定要导出作用的名称,默认为SYS_XXX

JOB_NAME=jobname_string

SELECT * FROM DBA_DATAPUMP_JOBS;--查看存在的job

15. LOGFILE

指定导出日志文件文件的名称,默认名称为export.log

LOGFILE=[directory_object:]file_name

Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.

Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log

16. NETWORK_LINK

指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项. 如:expdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area dumpfile =p_street_area.dmp logfile=p_street_area.log job_name=my_job

igisdb是目的数据库与源数据的链接名,

dir_dp是目的数据库上的目录

而如果直接用使用连接字符串(@fgisdb),expdp属于服务端工具,expdp生成的文件默认是存放在服务端的

17. NOLOGFILE

该选项用于指定禁止生成导出日志文件,默认值为N.

18. PARALLEL

指定执行导出操作的并行进程个数,默认值为1

注:并行度设置不应该超过CPU数的2倍,如果cpu为2个,可将PARALLEL设为2,在导入时速度比PARALLEL为1要快

而对于导出的文件,如果PARALLEL设为2,导出文件只有一个,导出速度提高不多,因为导出都是到同一个文件,会争抢资源。所以可以设置导出文件为两个,如下所示:

expdp gwm/gwm directory=d_test dumpfile=gwmfile1.dp,gwmfile2.dp parallel=2

19. PARFILE

指定导出参数文件的名称

PARFILE=[directory_path] file_name

20. QUERY

用于指定过滤导出数据的where条件

QUERY=[schema.] [table_name:] query_clause

Schema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES 等选项同时使用.

Expdp scott/tiger directory=dump dump file=a.dmp Tables=emp query=’WHERE deptno=20’

21. SCHEMAS

该方案用于指定执行方案模式导出,默认为当前用户方案.

22. STATUS

指定显示导出作用进程的详细状态,默认值为0

23. TABLES

指定表模式导出

TABLES=*schema_name.+table_name*:partition_name+*,…+

Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.

24. TABLESPACES

指定要导出表空间列表

25. TRANSPORT_FULL_CHECK

该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.

当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.

26. TRANSPORT_TABLESPACES

指定执行表空间模式导出

27. VERSION

指定被导出对象的数据库版本,默认值为COMPATIBLE.

VERSION={COMPATIBLE | LATEST | version_string}

为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.调用EXPDP

3.2.数据泵工具导出的步骤

1、创建DIRECTORY

create directory dir_dp as 'D:\oracle\dir_dp';

2、授权

Grant read,write on directory dir_dp to lttfm;

--查看目录及权限

SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;

3、执行导出

expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1

With the Partitioning, OLAP and Data Mining options

启动"LTTFM"."SYS_EXPORT_SCHEMA_01": lttfm/********@fgisdb sch

ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log; */

3.3.其他使用说明

1、directory=dir_dp必须放在前面,如果将其放置最后,会提示ORA-39002: 操作无效ORA-39070: 无法打开日志文件。

ORA-39087: 目录名DATA_PUMP_DIR; 无效

2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现

如下改成:

expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;

3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp lttfm/lttfm attach=lttfm.my_job1执行该命令时一直提示找不到job 表

4、创建的目录一定要在数据库所在的机器上。否则也是提示:

ORA-39002: 操作无效

ORA-39070: 无法打开日志文件。

ORA-39087: 目录名DATA_PUMP_DIR; 无效

3.4.导出的其他相关命令使用

1)Ctrl+C组合键:在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止

2)Export> status --查看当前JOB的状态及相关信息

3)Export> stop_job --暂停JOB(暂停job后会退出expor模式)

4)重新进入export模式下:C:\Documents and Settings\Administrator>expdp lttfm/lttfm attach=lttfm.my_job1 --语句后面不带分号

5)Export> start_job --打开暂停的JOB(并未开始重新执行)

6)Export> continue_client --通过此命令重新启动"LTTFM"."MY_JOB":

7)Export> kill_job --取消当前的JOB并释放相关客户会话(将job删除同时删除dmp文件)8)Export> exit_client --通过此命令退出export模式(通过4)可再进入export模式下)注:导出完成后job自动卸载

3.5.数据泵导出的各种模式

1、按表模式导出:

expdp lttfm/lttfm@fgisdb tables=lttfm.b$i_exch_info,lttfm.b$i_manhole_info dumpfile =expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp job_name=my_job

2、按查询条件导出:

expdp lttfm/lttfm@fgisdb tables=lttfm.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"'

3、按表空间导出:

Expdp lttfm/lttfm@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job

4、导出方案

Expdp lttfm/lttfm DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=lttfm,gwm

5、导出整个数据库:

expdp lttfm/lttfm@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job

6、使用exclude,include导出数据

1)、Include导出用户中指定类型的指定对象

--仅导出lttfm用户下以B开头的所有表,包含与表相关的索引,备注等。不包含过程等其它对象类型:

expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"LIKE \'B%\'\"

--导出lttfm用户下排除B$开头的所有表:

expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"NOT LIKE \'B$%\'\"

--仅导出lttfm用户下的所有存储过程:

expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job include=PROCEDURE;

2)、Exclude导出用户中指定类型的指定对象

--导出lttfm用户下除TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:

expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=exclude_1.dmp logfile=exclude_1.log directory=dir_dp job_name=my_job exclude=TABLE;

--导出lttfm用户下排除B$开头的所有表:

expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"LIKE\'b$%\'\";

--导出lttfm用户下的所有对象,但是对于表类型只导出以b$开头的表:

expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.log directory=dir_dp job_name=my_job exclude=TABLE:\"NOT LIKE \'b$%\'\";

4.Impdp数据泵导入

4.1.IMPDP命令行选项

与EXPDP有很多相同的,不同的有:

1、REMAP_DATAFILE

该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.

REMAP_DATAFIEL=source_datafie:target_datafile

2、REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中.

REMAP_SCHEMA=source_schema:target_schema

3、REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中

REMAP_TABLESPACE=source_tablespace:target:tablespace

4、REUSE_DATAFILES

该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N

REUSE_DATAFIELS={Y | N}

5、SKIP_UNUSABLE_INDEXES

指定导入是是否跳过不可使用的索引,默认为N

6、SQLFILE

指定将导入要指定的索引DDL操作写入到SQL脚本中

SQLFILE=[directory_object:]file_name

Impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql

7、STREAMS_CONFIGURATION

指定是否导入流元数据(Stream Matadata),默认值为Y.

8、TABLE_EXISTS_ACTION

该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP

TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

9、TRANSFORM

该选项用于指定是否修改建立对象的DDL语句

TRANSFORM=transform_name:value[:object_type]

Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型.

Impdp scott/tiger directory=dump dumpfile=tab.dmp Transform=segment_attributes:n:table

10、TRANSPORT_DATAFILES

该选项用于指定搬移空间时要被导入到目标数据库的数据文件

TRANSPORT_DATAFILE=datafile_name

Datafile_name用于指定被复制到目标数据库的数据文件

Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp

TRANSPORT_DATAFILES=’/user01/data/tbs1.f’调用IMPDP

4.2.impdp导入模式

1、按表导入

p_street_area.dmp文件中的表,此文件是以gwm用户按schemas=gwm导出的:

impdp gwm/gwm@fgisdb dumpfile =p_street_area.dmp logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area job_name=my_job

2、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导

入)

impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmp logfile=expdp_test.log directory=dir_dp job_name=my_job

3、不通过expdp的步骤生成dmp文件而直接导入的方法:

--从源数据库中向目标数据库导入表p_street_area

impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log job_name=my_job

igisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录

4、更换表空间

采用remap_tablespace参数

--导出gwm用户下的所有数据

expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm

注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容

--以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp remap_tablespace=gmapdata:gcomm

二、EXP,EXPDP数据导入本地性能测试

本文编写背景:

大家都知道,Oracle数据库有两种比较方便的导出导入工具,那就是exp/imp和expdp/impdp。熟悉此工具的人也会了解到,exp/imp的使用(服务器端和客户端都可以执行,并且备份文件可以在客户端产生);expdp/impdp的使用(服务器端和客户端都可以执行,备份文件只能存在服务器里面)。

但鉴于导出导入工具的特点,我们就想能否通过expdp将远端数据库数据导入到本地库中呢?当然可以!下面我们就一起来做一个测试吧。

测试说明:

目的:将远端数据库服务器(IP为65)的数据导入到本地(IP为67)dmp文件中

其中用到服务器(65)一个用户(user_exp)的一张表做测试(t_exp)

Create tablespace tbs_exp datafile ‘D:\tbs_exp.dbf’ size 10240m autoextend off;

Create user user_exp identified by user_exp default tablespace tbs_exp;

Grant connect,resource,unlimited tablespace to user_exp;

Conn user_exp/user_exp

create table t_exp as

select * from user_tablespaces;

declare

begin

for i in1 .. 10000000loop

insert into t_exp

(tablespace_name, block_size, initial_extent,MIN_EXTENTS ) values

('tablespace_name',0,0,i);

end loop;

commit;

end;

/

1.EXP工具数据导入本地步骤

直接通过以下代码将服务器数据导入到本地:

exp user_exp/user_exp@orcl_65 file=d:\exp_01.dmp log=d:\exp_01.log tables=(t_exp) 2.EXPDP工具数据导入本地步骤

第一步:本地建立导出用户

Create user db_exp identified by db_exp;

Grant connect,resource,create database link to db_exp;

第二步:本地创建directory,并授权导出用户使用

在操作系统上创建direxp目录

create or replace directory DIR_EXP as 'D:\direxp';

grant read,write on directory DIR_EXP to db_exp;

第三步:,并创建db link 链接

-- Create database link

create database link to_exp_65

connect to user_exp identified by user_exp

using '(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.48.1.65)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SID = orcl)

)

)';

Select 1 from dual@to_exp_65;

第四步:导出代码

expdp db_exp/db_exp@orcl_67 directory=DIR_EXP dumpfile=expdp_01.dmp logfile=expdp_01.log tables=(t_exp) network_link=to_exp_65

其他备注:

Db_exp 本地用户,用来连接远端数据库服务器

Dir_exp 本地db_exp用户下的directory 用户本地指定expdp写入目录,这里是D盘direxp 文件夹

To_exp_65 本地db_exp用户下的db link ,用来连接远端数据库服务器

3.EXP,EXPDP工具数据导入本地性能对比

性能测试结果:

Exp导出过程如下:

C:\Documents and Settings\Administrator>prompt $P$G$T$G

C:\Documents and Settings\Administrator>16:10:55.37>

C:\Documents and Settings\Administrator>16:11:05.92>exp user_exp/user_exp@orcl_6

5 file=d:\exp_01.dmp log=d:\exp_01.log tables=(t_exp)

Export: Release 10.2.0.1.0 - Production on 星期三10月12 16:11:07 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集

服务器使用AL32UTF8 字符集(可能的字符集转换)

即将导出指定的表通过常规路径...

. . 正在导出表T_EXP导出了10000007 行

成功终止导出, 没有出现警告。

C:\Documents and Settings\Administrator>16:17:51.04>

用时:6分钟46秒

Expdp导出过程如下:

C:\Documents and Settings\Administrator>16:22:15.25>expdp db_exp/db_exp@orcl_67

directory=DIR_EXP dumpfile=expdp_01.dmp logfile=expdp_01.log tables=(t_exp) netw

ork_link=to_exp_65

Export: Release 10.2.0.1.0 - Production on 星期三, 12 10月, 2011 16:22:16

Copyright (c) 2003, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

启动"DB_EXP"."SYS_EXPORT_TABLE_01": db_exp/********@orcl_67 directory=DIR_EXP dumpfile=expdp_01.dmp logfile=expdp_01.log tables=(t_exp) network_link=to_exp_65

正在使用BLOCKS 方法进行估计...

处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA

使用BLOCKS 方法的总估计: 336 MB

处理对象类型TABLE_EXPORT/TABLE/TABLE

. . 导出了"USER_EXP"."T_EXP" 285.8 MB 10000007 行

已成功加载/卸载了主表"DB_EXP"."SYS_EXPORT_TABLE_01"

****************************************************************************** DB_EXP.SYS_EXPORT_TABLE_01 的转储文件集为:

D:\DIREXP\EXPDP_01.DMP

作业"DB_EXP"."SYS_EXPORT_TABLE_01" 已于16:23:35 成功完成

C:\Documents and Settings\Administrator>16:23:36.46>

用时:1分钟21秒

另:Expdp导入到远程数据库服务端所耗时间如下:

C:\Documents and Settings\Administrator>16:27:40.92>expdp user_exp/user_exp@orcl

_65 directory=DATA_FILE_DIR dumpfile=expdp_02.dmp logfile=expdp_02.log

Export: Release 10.2.0.1.0 - Production on 星期三, 12 10月, 2011 16:27:41

Copyright (c) 2003, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

启动"USER_EXP"."SYS_EXPORT_SCHEMA_01": user_exp/********@orcl_65 directory=DAT

A_FILE_DIR dumpfile=expdp_02.dmp logfile=expdp_02.log

正在使用BLOCKS 方法进行估计...

处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATA

使用BLOCKS 方法的总估计: 336 MB

处理对象类型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

处理对象类型SCHEMA_EXPORT/TABLE/TABLE

处理对象类型SCHEMA_EXPORT/TABLE/INDEX/INDEX

处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

处理对象类型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

处理对象类型SCHEMA_EXPORT/TABLE/COMMENT

. . 导出了"USER_EXP"."T_EXP" 285.9 MB 10000007 行

已成功加载/卸载了主表"USER_EXP"."SYS_EXPORT_SCHEMA_01"

******************************************************************************

USER_EXP.SYS_EXPORT_SCHEMA_01 的转储文件集为:

E:\ORACLE\PRODUCT\10.2.0\DB_1\DEMO\SCHEMA\SALES_HISTORY\EXPDP_02.DMP 作业"USER_EXP"."SYS_EXPORT_SCHEMA_01" 已于16:24:52 成功完成

C:\Documents and Settings\Administrator>16:27:59.70>

用时:0分钟19秒

可见,从远端服务器导数据到本地,使用数据泵也是可以完成的,同时效率还是远远高于普通的exp导出。

oracle数据库数据的导入导出

Oracle数据库导入导出命令(备份与恢复) Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。今天在这里主要讲一下用命令行来操作oracle数据导入和导出: 备份数据 1、获取帮助: exp help=y 2. 导出一个完整数据库 exp user/pwd@instance file=path full=y 示例:exp system/system@xc file = c:/hehe full =y imp tax/test@tax file=d:/dbbak.dmp full=y 3 、导出一个或一组指定用户所属的全部表、索引和其他对象 exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold) 示例:exp system/system@xc file=c:/hehe owner=uep 4、导出一个或多个指定表 exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist) 示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table) 恢复数据 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) ************************ **************************** 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种类型的输出: (1)表方式(T方式),将指定表的数据导出。 (2)用户方式(U方式),将指定用户的所有对象及数据导出。 (3)全库方式(Full方式),将数据库中的所有对象导出。 数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

imp和exp命令导入和导出.dmp文件

Oracle数据库文件中的导入\导出(imp/exp命令) Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库TEST完全导出,用户名system密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上com press=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 im p system/manager@TEST file=d:daochu.dmp im p aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y

oracle表的导入导出-命令

数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上 compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=file= d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:daochu.dmp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。 注意: 操作者要有足够的权限,权限不够它会提示。 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 第五, 运行-cmd-进入dmp文件所在的目录, imp userid=system/manager full=y file=*.dmp

Oracle数据导入导出imp,exp命令

Oracle数据导入导出imp/exp命令10g以上expdp/impdp命令 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以 把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于在oracle 8i 中安装目录ora81BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到 D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:\datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上compress=y 来实现。 数据的导入 1 将D:\daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:\daochu.dmp imp aichannel/aichannel@TEST full=y file=d:\datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

oracle表的导入导出-命令

oracle表的导入导出-命令.txt12思念是一首诗,让你在普通的日子里读出韵律来;思念是一阵雨,让你在枯燥的日子里湿润起来;思念是一片阳光,让你的阴郁的日子里明朗起来。数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp

Oracle Export/Import数据库备份与恢复的三种方法

Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: exp system/manager inctype=complete file=040731.dmp (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: exp system/manager inctype=incremental file=040731.dmp

推荐下载-Oracle 数据泵导出和导入 精品

Oracle10g数据导入导出 简介 Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。 注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。 以下是DATA PUMP的几个优点介绍: 1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。 2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。 3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server 端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORY DATA PUMP要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server 端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。 注意:在开始操作之前要验证外部目录是否存在,并且下达create directory 命令的用户需要拥有create any directory的系统权限。 下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

Oracle常用命令(详细介绍导入、导出全部方法)

(经典)感觉很有用. Oracle 创建删除用户、角色、表空间、导入导出、备份命令总结导入导出实用程序用于实施数据库的逻辑备份和恢复 导出实用将数据库中的对象定义和数据备份到一个操作系统二进制文件中 导入使用程序读取二进制导出文件并将对象和数据载入数据库中 导出额导入实用程序的特点有: 1.可以按时间保存表结构和数据 2.允许导出指定的表,并重新导入到新的数据库中 3.可以吧数据库迁移到另外一台异构服务器上 4.在两个不同版本的Oracle数据库之间传输数据 5.在联机状态下进行备份和恢复 6.可以重新组织表的存储结构,减少链接及磁盘碎片 调用导入导出的三种方法: 在命令执行程序的参数和参数值 已交互的方式提示用户逐个输入参数的值 允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数 导入导出数据库对象的四种模式:完全数据库、表、用户、表空间 导入导出整个数据库的所有对象 导入导出一个或多个指定的表或表空间 导入导出一个用户模式中的所有对象 导入导出一个或多个指定的表空间中的所有对象 导出使用程序有以下常用的命令参数 参数说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示 FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数OWNER 要导出的数据库用户列表 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出表中的数据 TABLES 按表方式导出时,指定需导出的表和分区的名称

PARFILE 指定传递给导出实用程序的参数文件名 TABLESPACES 按表空间方式导出时,指定要导出的表空间名 导出实用程序 按用户方式导出数据 exp gmd/gmd@oracle file=d:/1.dmp owner=gmd 按表方式导出数据 exp gmd/gmd@oracle tables=(GRP_PROVINCE,GRP_CITY,GRP_AREA) file=d:/2.dmp 按表空间方式导出数据 exp system/oracle@oracle tablespaces=(gmd) file=d:/3.dmp 使用参数文件导出数据 exp system/oracle@oracle parfile='d:\parameters.txt' 导入使用程序有以下常用的命令参数 参数说明 USERID 指定执行导入的用户名和密码 BUFFER 指定用来读取数据的缓冲区大小,以字节为单位 COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交 FILE 指定要导入的二进制文件名 FROMUSER 指定要从导出转储文件中导入的用户模式 TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 FULL 指定是否要导入整个导出转储文件 TABLES 指定要导入的表的列表 ROWS 指定是否要导入表中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数IGNORE 导入时是否忽略遇到的错误,默认为N TABLESPACES 按表空间方式导入,列出要导入的表空间名 导入实用程序 按整个文件导入数据库 imp gmd/gmd@oracle file=d:1.dmp ignore=y full=y 按halibut用户的表导入到fantasy用户 imp gmd/gmd@oracle file=2.dmp fromuser=halibut touser=fantasy tables=(t_user,role) 使用参数文件导入数据 imp system/oracle@oracle parfile='d:\paramenters.txt'

db2导入导出常用命令

Db2 文件导入导出常见命令总结Db2 的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机,千变万化,稍不留神,则错误百出,这儿就工作中常用到的命令,总结了一下,分享给大家!欢迎大家踊跃拍砖!? 当然在这以前,我觉得有必要提及一点关于导入导出基础的知识!DEL:界定的ASCII文件,行分隔符和列分隔符将数据分开。ASC:定长的ASCII文件,行按照行分割符分开,列定长。PC/IXF:只能用来在db2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用了的长度,文件中包括表的定义和表的数据。WSF:工作表方式导入导出,这种格式的文件类型用的比较少。Db2中对不同的数据导入导出方式,支持不同的文件类型,这里个人觉得很有必要注意的。文件类型Import export load ------------------------------------------------------- 定界支持支持支持非定界支持不支持支持Ixf 支持支持支持Wsf工作表支持支持不支持 关于3种导入导出操作进行简单的介绍: export:导出数据,支持IXF,DEL或WSF import:导入数据,可以向表中导入数据,支持上面提到的4种文件类型。 load:导入数据,功能和import基本相同。支持以上说的几种文件类型。 关于Export 这个其实比较简单,没啥好说的,一般命令:export to filename of filetype select x from xx where 就ok了,这里需要注意的是: 1. 关于不同字符集的导出MODIFIED BY CODEPAGE= Exprot to filename.del for del MODIFIED BY CODEPAGE=1386 select …from …where …; 这里,在数据从数据库倒出来的时候就会做一个数据库代码页的转换 2.时间字段格式化的MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" 例:Exprot to filename.del for del MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" select …from …where …; 关于Import 1.Import模式的介绍 CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE CREATE :首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是PC/IXF。还可以指定新表所在表空间的名称INSERT :将导入的数据插入表中。目标表必须已经存在。INSERT_UPDATE :将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。REPLACE :删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。REPLACE_CREATE :如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用REPLACE_CREATE。 2. 批量提交COMMITCOUNT,保证insert的数据在COMMITCOUNT以后进行一次commit,这对于大数据量的导入文件来说是一个不错的方法,例:Import from filename of del COMMITCOUNT 50000 insert into tabname; 3. 批量插入MODIFIED BY COMPOUND把文件中的COMPOUND 行记录作为一组一起导入,这个操作可以和上边的批量提交一起使用,比较理想。例:Import from filename of del MODIFIED BY COMPOUND =50 insert into tabname; 4. 导入记录限制ROWCOUNT:只导入rowcount 条数据,有时候,业务逻辑需要只导入部分数据,那么ROWCOUNT是一个不错的选择,只是在我的测试中ROWCOUNT一直没有起过作用,呵呵,谁熟悉这里,帮我完善下。例:Import from filename of del ROWCOUNT 10000

Oracle 数据库 常用命令

SPOOL将屏幕所有的输出输出到指定文件 -- spool 文件路径名; spool g:\mysql.sql; --业务操作 --结束输出 spool off; 执行一个SQL脚本文件 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 --start file_name -- @ file_name start g:\mysql.sql; @ g:\mysql.sql; 对当前的输入进行编辑 edit ed 重新运行上一次运行的sql语句 / 显示一个表的结构 desc table_name ; 清屏 clear screen; 退出 exit; 置当前session是否对修改的数据进行自动提交 --SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} set autocommit on; 在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 -- SET ECHO {ON|OFF}; set echo on; 是否显示当前sql语句查询或修改的行数 --SET FEED[BACK] {6|n|ON|OFF}

-- 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 set feedback 1; 是否显示列标题 --当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 --SET HEA[DING] {ON|OFF} set heading on; 设置一行可以容纳的字符数 -- 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示 --SET LIN[ESIZE] {80|n} set linesize 100; 设置页与页之间的分隔 -- SET NEWP[AGE] {1|n|NONE} --当set newpage 0 时,会在每页的开头有一个小的黑方框。 --当set newpage n 时,会在页和页之间隔着n个空行。 --当set newpage none 时,会在页和页之间没有任何间隔 set newpage 1; 设置一页有多少行数 --如果设为0,则所有的输出内容为一页并且不显示列标题 --SET PAGES[IZE] {24|n} set pagesize 20; 是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 --SET SERVEROUT[PUT] {ON|OFF} set serveroutput on; 是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 --在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,--设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度 --SET TERM[OUT] {ON|OFF} set termout off; 在dos里连接oracle数据库 CONNECT user_name/passwd@l_jiayou

oracle按用户导入导出数据

Oracle数据库exp imp按用户导出导入实例 按用户导出再导入实例,任务要求如下: ◆1.从一台windows服务器 A 上导出 Test1 这个用户的所有对象,然后导入到linux服务器 B 上的 Test2用户。(已知Test1密码为Test1passwd 或者用system用户导出也行) ◆2.B机器上Test2用户不存在,或Test2用户已经存在两种情况(用户存在相对比较复杂) ---------如果Test2用户已经存在(数据没用,可以删除),级联删除用户及所有对象(有可能遇到有人正在连接,删除不掉的情况方法参照下文),重新创建账号并赋权。 ◆3.赋予适当的权限 操作步骤: ◆1.从 A 上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系) sqlplus /nolog conn / as sysdba exp Test1/Test1passwd owner=Test1 file=D:\files\Test1.dmp ◆2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间 SQL> select username,default_tablespace from dba_users where username ='TEST1'; USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ TEST1 CMIS ◆3.查看用户使用的表空间 SQL> select DISTINCT owner ,tablespace_name from dba_extents where owner like 'TEST1'; OWNER TABLESPACE_NAME ------------------------------ ------------------------------ TEST1 XSL TEST1 CMIS ◆4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。 SQL> select file_name,tablespace_name from dba_data_files where tablespace_name in ('CMIS','XSL'); FILE_NAME BYTES TABLESPACE ------------------------------------------------------------ ---------- ---------- D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS 8728346624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS01.ORA 8204058624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS02.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS03.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS04.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS05.ORA 4194304000 CMIS

DB数据库导入导出

D B数据库导入导出 Revised final draft November 26, 2020

D B2数据导入导出 2012年3月12日 编辑:徐彦 一、环境 操作系统:RedhatLinuxAS5.5 (-128.el5PAE#1SMPi686i386GNU/Linux) 数据库版本:DB2WorkGroup版V9.7.0 (数据库版本可通过连接数据库来查看,db2connecttodbname) 二、声明 实例用户,默认为db2inst1 Das用户,默认为dasusr1 数据库安装目录($INSTHOME),默认为/opt/ibm/db2/V9.7 实例安装目录($HOME),默认为/home/db2inst1/ 实例名:db2inst1 数据库名: 三、导出具体步骤 3.1导出对象结构 建议单独创建一个数据导出目录,利于导出文件整理的清晰。 $su–db2inst1 #切换至db2inst1用户 $cd/ #为导出目录,例如/home/db2inst1/dbdmp(db2inst1要有相应的读写权限) $db2connectto #连接至数据库 $db2look–d-e–a–l–o.sql #导出数据库对象创建脚本 例子: 数据库名为meibof 3.2导出数据库数据 (建议在目录下另建db2move的目录用来存放导出数据,因为db2move命令会产生若干文件) db2moveexport

(如果导出是发现有warning,在上面的命名后面加上-aw参数) 以数据库名为meibof为例: 四、导入具体步骤 4.1建立新数据库 $su–db2inst1 #切换至db2inst1用户 db2createdb(建议使用db2cc工具来进行创建数据库) 创建名为meibof的数据库: 4.2执行.sql脚本创建数据库 切换到放置.sql的目录 db2–tvf.sql (单次导入有可能丢失数据结构,建议连续执行3次,导入完成后,和开发人员确认数据库对象的数量,尤其是存储过程。) 4.3导入数据 切换到放置db2move导出数据的目录 db2moveload 4.4一致性检查 原理:如果发现有表存在检查挂起状态(由于检查约束的原因),则输入命令如下 db2setintegrityforschema.tablenameimmediatechecked将其转换成正常状态。 首先利用sql语句得到要检查的表的执行语句 主要命令: db2"select'db2setintegrityfor.'||TABNAME||'immediatechecked'fromsyscat.tableswhereTABSCHEMA=''an dSTATUS='C'" 以数据库名meibof,SCHEMA名meibof为例: 查出有14张表需要转换成正常状态。 在上一条语句末加上>filename.sh把要添加的sql语句添加到脚本文件 如下例: 用vi文本编辑器打开脚本文件: 1)在第一行加入连接数据库sql语句; 2)在最后一行加入commit命令,db2commit 执行完后再次检查发现没有需要更正的: 说明:如果还有需要更正的表,则反复执行上述操作。

oracle数据库导入导出命令

Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。 Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远。 你同样可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于在oracle 8i 中安装目录\$ora10g\BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp 中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表table1 、table2导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\" 上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。 不过在上面命令后面加上 compress=y 就可以了 数据的导入 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:\daochu.dmp 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

数据库导入导出命令

MySQL: 1.导出整个数据库 mysqldump -u 用户名-p 数据库名>导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc>wcnc.sql 2.导出一个表 mysqldump -u 用户名-p 数据库名表名>导出文件的路径和名称 mysqldump -u wcnc -p smgp_apps_wcnc users>wcnc_users.sql 3.导出一个数据库结构 mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc>d:wcnc_db.sql -d 没有数据--add-drop-table 在每个create语句之前增加一个drop table 4.导入数据库 常用source 命令 进入mysql数据库控制台, 如mysql -u root -p mysql>use 数据库 然后使用source命令,后面参数为脚本文件(如这里用到的.sql) mysql>source d:wcnc_db.sql(注:如果写成source d:\wcnc_db.sql,就会报语法错误)Oracle: Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库GAKJ完全导出,用户名system 密码GAKJ_2280导出到D:DA TA.dmp中 exp system/GAKJ_2280@GAKJ file=d:DATA.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/GAKJ_2280@GAKJ file=d:DATA.dmp owner=(system,sys) 3 将数据库中的表USER USER_CONFIG导出 expMICROGPSDBA/MICROGPSDBA@GAKJ file= d:\TABLE.dmp tables=(USER USER_CONFIG) 4 将数据库中的表USER中的字段filed1以"00"打头的数据导出 exp system/GAKJ_2280@GAKJ file=d:\DATA.dmp tables=(USER) query=" where filed1 like '00%'" 数据的导入 1 将D:DATA.dmp 中的数据导入GAKJ数据库中。

相关主题