oracle导入导出imp/exp语句

exp ewms/ewms@10.172.1.21:1521/WMS file=D:\ewms20190823.dmp

imp system/FtongRSM56@10.172.1.23:1521/RSM file=D:\htlrsmdb\HTLRSMdata.dmp fromuser=RSM touser=HTLRSM19
imp system/FtongRSM56@10.172.1.23:1521/JXSHRSM file=D:\JXSHRSMdata.dmp fromuser=RSM touser=JXSHRSM
Oracle 11g的新特性,表数据如果为空,则延迟分配表空间,所以导出的数据不全,注意检查
eg:
--设置立刻分配表空间(设置后,后续新增的表即使没有数据会自动创建表空间,不再延迟创建)
alter system set deferred_segment_creation=false;

先分析所有的表,将表信息放入user_tables中。

select 'analyze table '||table_name||' compute statistics;' from user_tables;
--查询当前用户下的所有空表
select table_name from user_tables where NUM_ROWS=0; 
select table_name,segment_created from user_tables where num_rows=0 or num_rows is null;
-- 根据上述查询,可以构建针对空表分配空间的命令语句,执行下列查询出的语句即可
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

exp/imp是Oracle自带的导入导出命令,运用它,即使不需要那结UI工具也能轻易的完成数据导出导入工作,下面是它们的参数:

EXP参数详解
使用的格式是:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
其中USERID是必须的且为第一个参数

 

关键字备注
USERID用户名/口令
FULL导出整个文件 (N)
BUFFER数据缓冲区的大小
OWNER所有者用户名列表
FILE输出文件 (EXPDAT.DMP)
TABLES表名列表
COMPRESS导入一个范围 (Y)
RECORDLENGTHIO 记录的长度
GRANTS导出权限 (Y)
INCTYPE增量导出类型
INDEXES导出索引 (Y)
RECORD跟踪增量导出 (Y)
ROWS导出数据行 (Y)
PARFILE参数文件名
CONSTRAINTS导出限制 (Y)
CONSISTENT交叉表一致性
LOG屏幕输出的日志文件
STATISTICS分析对象 (ESTIMATE)
DIRECT直接路径 (N)
TRIGGERS导出触发器 (Y)
FEEDBACK显示每 x 行 (0) 的进度
FILESIZE各转储文件的最大尺寸
QUERY选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导出可传输的表空间元数据 (N)
TABLESPACES将传输的表空间列表

 


IMP参数详解
使用的格式是:IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
其中USERID是必须的且为第一个参数
 

 

关键字备注
USERID用户名/口令
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有者用户名列表
TOUSER用户名列表
FILE输入文件 (EXPDAT.DMP)
SHOW只列出文件内容(N)
TABLES表名列表
IGNORE忽略创建错误 (N)
RECORDLENGTHIO 记录的长度
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_TIMEOUTRESUMABLE 的等待时间
COMPILE编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION导入流的一般元数据 (Y)
STREAMS_INSTANTIATION导入流实例化元数据 (N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导入可传输的表空间元数据 (N)
TABLESPACES将要传输到数据库的表空间
DATAFILES将要传输到数据库的数据文件
TTS_OWNERS拥有可传输表空间集中数据的用户

 

 

一、介绍
逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程。
逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。
物理备份即可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行。

 

二、备份(导出)
导出分为导出表、导出方案、导出数据库三种方式。
导出使用exp命令来完成的,该命令常用的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串
tables:用于指定执行导出操作的表
owner:用于指定执行导出操作的方案
full=y:用于指定执行导出操作的数据库
inctype:用于指定执行导出操作的增量类型
rows:用于指定执行导出操作是否要导出表中的数据
file:用于指定导出文件名

注意:特别说明-->在导入和导出的时候,要到oracle目录的bin目录下。

1)、导出表
1.导出自己的表
exp userid=scott/oracle@orcl tables=(emp) file=d:\emp.dmp --导出单个表
exp userid=scott/oracle@orcl tables=(emp,dept) file=d:\emp.dmp --导出多个表
eg、
C:\Users\jiqinlin>cd D:\dev\oracle\product\10.2.0\db_1\bin
C:\Users\jiqinlin>d:
D:\dev\oracle\product\10.2.0\db_1\bin>exp userid=scott/oracle@orcl tables=(emp) file=d:\emp.dmp

              

2.导出其它方案的表
如果用户要导出其它方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表
D:\dev\oracle\product\10.2.0\db_1\bin>exp userid=system/oracle@orcl tables=(scott.emp) file=d:\emp.emp
D:\dev\oracle\product\10.2.0\db_1\bin>exp userid=system/oracle@orcl tables=(scott.emp,scott.dept) file=d:\emp.emp

                  

3. 导出表的结构
exp userid=scott/oracle@orcl tables=(emp) file=d:\emp.dmp rows=n

4. 使用直接导出方式
exp userid=scott/oracle@orcl tables=(emp) file=d:\emp.dmp direct=y
这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。
这时需要数据库的字符集要与客户端字符集完全一致,否则会报错...
                    
2)、导出方案
导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束...)和数据,并存放到文件中。
1. 导出自己的方案
exp userid=scott/oracle@orcl owner=scott file=d:\scott.dmp
2. 导出其它方案
如果用户要导出其它方案,则需要dba的权限或是exp_full_database的权限,
比如system 用户就可以导出任何方案
exp userid=system/oracle@orcl owner=(system,scott) file=d:\system.dmp
                
3)、导出数据库
导出数据库是指利用export导出所有数据库中的对象及数据,要求该用户具有dba的权限或者是exp_full_database权限
增量备份(好处是第一次备份后,第二次备份就快很多了)
exp userid=system/oracle@orcl full=y inctype=complete file=d:\all.dmp

三、恢复(导入)
导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件。与导出相似,导入也分为导入表,导入方案,导入数据库三种方式。
imp常用的选项有
userid:用于指定执行导入操作的用户名,口令,连接字符串
tables:用于指定执行导入操作的表
formuser:用于指定源用户
touser:用于指定目标用户
file 用于指定导入文件名
full=y:用于指定执行导入整个文件
inctype:用于指定执行导入操作的增量类型
rows:指定是否要导入表行(数据)
ignore:如果表存在,则只导入数据

1)导入表
1. 导入自己的表
imp userid=scott/oracle@orcl tables=(emp) file=d:\xx.dmp
2. 导入表到其它用户
要求该用户具有dba的权限,或是imp_full_database
imp userid=system/oracle@orcl tables=(emp) file=d:\xx.dmp touser=scott
3. 导入表的结构
只导入表的结构而不导入数据
imp userid=scott/oracle@orcl tables=(emp) file=d:\xx.dmp rows=n
4. 导入数据
如果对象(如比表)已经存在可以只导入表的数据
imp userid=scott/oracle@orcl tables=(emp) file=d:\xx.dmp ignore=y

2)导入方案
导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其它方案,要求该用户具有dba 的权限,或者imp_full_database
1.导入自身的方案
imp userid=scott/oracle@orcl file=d:\xxx.dmp
2.导入其它方案
要求该用户具有dba的权限
imp userid=system/oracle@orcl file=d:\xxx.dmp fromuser=system touser=scott

3)导入数据库(相当于数据库迁移)
在默认情况下,当导入数据库时,会导入所有对象结构和数据,案例如下:
imp userid=system/oracle@orcl full=y file=d:\xxx.dmp

### 回答1: 要导出导入Oracle数据库中的CLOB和BLOB数据类型,可以使用以下方法: 1. 使用Oracle自带的expimp工具导出导入整个数据库或特定表的数据。在导出时,使用参数“file=clob_data.dmp”或“file=blob_data.dmp”指定导出文件名。在导入时,使用参数“file=clob_data.dmp”或“file=blob_data.dmp”指定导入文件名。 2. 使用Oracle SQL Developer工具导出导入特定表的数据。在导出时,选择要导出的表,右键点击选择“导出”选项,选择“导出数据”并选择“导出为LOB文件”。在导入时,选择要导入的表,右键点击选择“导入”选项,选择“导入数据”并选择“从LOB文件导入”。 3. 使用PL/SQL代码导出导入CLOB和BLOB数据。在导出时,使用SELECT语句查询CLOB或BLOB列的值,并将其写入文件中。在导入时,使用INSERT语句将文件中的值插入到CLOB或BLOB列中。 以上是几种常见的导出导入Oracle数据库中CLOB和BLOB数据的方法。具体使用哪种方法取决于具体情况和需求。 ### 回答2: Oracle是一个广泛使用的关系型数据库,其中包含了CLOB(字符大对象)和BLOB(二进制大对象)类型的数据。这些数据类型通常用于存储大型文本和图像等二进制数据。在Oracle中,导出导入CLOB和BLOB数据是非常常见的任务。本文将介绍如何导出导入这些类型的数据。 首先,我们需要了解Oracle提供的导出工具是expexpdp。exp是旧版工具,而expdp是新版工具。在导出CLOB和BLOB数据时,我们建议使用expdp,因为它是专门为大量导出数据而设计的。下面我们来看看导出CLOB数据的方法: 1. 使用expdp导出 使用expdp命令导出CLOB数据需要指定以下参数: - expdp system/password tables=table_name directory=directory_name dumpfile=file_name.dmp lob_file=file_name.log EXCLUDE=STATISTICS 其中table_name是要导出的表名,directory_name是导出文件的路径,file_name是导出文件的名称,lob_file是LOB类型的文件的名称。 2. 使用SQL*Plus导出 我们也可以使用SQL*Plus命令导出CLOB数据。以下是步骤: 1)使用SQL*Plus连接到Oracle数据库。 2)使用以下命令在本机上创建目录 OBJECT_DIR: CREATE OR REPLACE DIRECTORY OBJECT_DIR AS 'C:\TEMP'; 3)使用以下命令导出CLOB数据: SET LONG 10000 SET PAGESIZE 0 SET LINESIZE 1000 SET FEEDBACK OFF SPOOL CLOB_Export.sql SELECT 'SELECT ' || column_name || ' FROM ' || table_name || ' WHERE ' || where_clause || ';' FROM all_tab_cols WHERE data_type = 'CLOB' AND table_name = 'TABLE_NAME'; SPOOL OFF 4)使用以下命令将生成的SQL脚本文件CLOB_Export.sql导出到本地目录: exp userid=username/password file=dumpfile.dmp owner=owner_name log=clob_export.log 接下来我们会介绍如何导入CLOB和BLOB数据。 1. 使用impdp导入 使用impdp命令导入CLOB数据需要指定以下参数: - impdp system/password directory=directory_name dumpfile=file_name.dmp logfile=file_name.log tables=table_name 其中directory_name是导入文件的路径,file_name是导入文件的名称,table_name是要导入数据的表的名称。 2. 使用SQL*Plus导入 我们也可以使用SQL*Plus命令导入CLOB数据。以下是步骤: 1)使用SQL*Plus连接到Oracle数据库。 2)使用以下命令在本机上创建LOB的目录 LOB_DIR: CREATE OR REPLACE DIRECTORY LOB_DIR AS 'C:\TEMP'; 3)使用以下命令在Oracle中创建LOB表: CREATE TABLE lob_table ( lob_column CLOB ); 4)使用以下命令将LOB类型的文件loaded_file.xml导入到LOB表中: INSERT INTO lob_table (lob_column) VALUES (EMPTY_CLOB()); SELECT lob_column FROM lob_table FOR UPDATE; DECLARE infile BFILE :=BFILENAME('OBJECT_DIR', 'loaded_file.xml'); lob_loc CLOB; BEGIN DBMS_LOB.OPEN(lob_column, DBMS_LOB.LOB_READWRITE); DBMS_LOB.LOADFROMFILE(lob_column, infile, DBMS_LOB.GETLENGTH(infile)); DBMS_LOB.CLOSE(lob_column); COMMIT; END; / 以上是导出导入CLOB/BLOB数据的两种方法,根据实际情况可以选择使用expdp、impdp或SQL*Plus导出导入。然而在导入CLOB/BLOB时,需要特别注意数据库版本以及LOB大小限制等问题。 ### 回答3: 在Oracle中,CLOB和BLOB是用来存储大文本和二进制数据的数据类型。有时候我们需要对这些数据进行导入导出。在这篇文章中,我会介绍如何将CLOB和BLOB数据导入导出导出CLOB/BLOB数据 在Oracle中,可以使用DBMS_LOB包来导出CLOB和BLOB数据。首先,我们需要使用SELECT语句来查询需要导出的数据。查询的结果会以一个CLOB或BLOB对象的形式存在,然后我们可以把这个对象导出到一个文件中。以下是导出CLOB和BLOB对象到文件中的步骤: 1.查询需要导出的数据 例如,我们可以使用以下SELECT语句来查询一个CLOB表中的数据: SELECT clob_column FROM clob_table; 2.将查询结果存储到变量中 为了方便将查询结果导出到文件中,我们需要将查询结果存储到一个变量中。我们可以使用PL/SQL或SQL*Plus来完成这个任务。以下是一个PL/SQL的例子: DECLARE my_data CLOB; BEGIN SELECT clob_column INTO my_data FROM clob_table; END; 3.将变量的值导出到文件中 使用DBMS_LOB包中的函数,可以将变量的值导出到文件中,以下是一个导出CLOB数据的例子: DECLARE my_data CLOB; my_file UTL_FILE.FILE_TYPE; BEGIN SELECT clob_column INTO my_data FROM clob_table; my_file := UTL_FILE.FOPEN('MY_DIR', 'my_file.txt', 'w'); DBMS_LOB.FILEEXPORT(my_file, my_data); UTL_FILE.FCLOSE(my_file); END; 注意: - 'MY_DIR'是Oracle指定的一个目录,需要在数据库中提前定义。 - 'my_file.txt'是导出文件的名称 - 'w'表示以覆盖模式写入文件 这个例子将会把查询出来的CLOB数据导出为txt文件。 导入CLOB/BLOB数据 同样的,我们可以使用DBMS_LOB包来导入CLOB和BLOB数据。以下是导入CLOB和BLOB数据的步骤: 1.读取文件内容 使用UTL_FILE包中的函数,可以读取文件的内容到一个变量中,例如以下SQL*Plus的命令: DEFINE my_file='my_file.txt' DECLARE my_data CLOB; my_file UTL_FILE.FILE_TYPE; BEGIN my_file := UTL_FILE.FOPEN('MY_DIR', '&my_file', 'r'); UTL_FILE.GET_LINE(my_file, my_data); UTL_FILE.FCLOSE(my_file); END; 注意: - 'my_file.txt'是要导入到数据库的文件名称 - MY_DIR是Oracle指定的一个目录,需要在数据库中提前定义。 2.将变量的值导入到数据库中 使用INSERT语句将变量的值插入到CLOB表中,例如以下的SQL*Plus命令: INSERT INTO clob_table (clob_column) VALUES (my_data); 注意: 在Oracle中,插入CLOB和BLOB数据时,要使用专门的函数,例如: INSERT INTO clob_table (clob_column) VALUES (TO_LOB('some text')); 以上就是导出导入CLOB/BLOB数据的步骤。当然,在实际操作中可能会遇到各种各样的问题,我们需要仔细阅读相关的文档,查找正确的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值