oracle数据库导入导出命令
使用imp和exp命令对Oracle数据库进行导入导出操作详解
使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解这⾥导⼊导出路径都在D盘下,默认⽂件名为:example.dmpexp⽅式导出数据相关参数项如下:关键字说明默认USERID⽤户名/⼝令FULL导出整个⽂件(N)BUFFER数据缓冲区的⼤⼩OWNER导出指定的所有者⽤户名列表FILE输出⽂件(EXPDAT.DMP)TABLES导出指定的表名列表COMPRESS是否压缩导出的⽂件(Y)RECORDLENGTH IO 记录的长度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导出指定的表空间列表1.完全导出(选项都为默认配置)例⼦:导出mydb数据库system⽤户,密码为123456的所有数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmp2.只导出表结构例⼦:导出mydb数据库system⽤户,密码为123456的所有表结构到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmprows=n3.将指定⽤户下的表导出例⼦:导出mydb数据库system和sys⽤户的所有表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmpowner=(system,sys)4.将指定的表导出例⼦:导出mydb数据库system⽤户下的table1和table2表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmptables=(table1,table2)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 ⾏显⽰进度TOID_NOVALIDATE跳过指定类型 ID 的验证FILESIZE每个转储⽂件的最⼤⼤⼩STATISTICS始终导⼊预计算的统计信息RESUMABLE在遇到有关空间的错误时挂起RESUMABLE_NAME⽤来标识可恢复语句的⽂本字符串RESUMABLE_TIMEOUT RESUMABLE 的等待时间COMPILE编译过程, 程序包和函数(Y)STREAMS_CONFIGURATION导⼊ Streams 的⼀般元数据(Y)STREAMS_INSTANITATION导⼊ Streams 的实例化元数据(N)TRANSPORT_TABLESPACE导⼊可传输的表空间元数据TABLESPACES将要传输到数据库的表空间DATAFILES将要传输到数据库的数据⽂件TTS_OWNERS拥有可传输表空间集中数据的⽤户1.导⼊⼀个完整的库例⼦:将D:\example.dmp⽂件中的库导⼊到mydb下的system⽤户中impsystem/**************.12.32/mydbfile=D:\example.dmpfull=yignore=y到此这篇关于使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解的⽂章就介绍到这了,更多相关Oracle数据库exp和imp 导⼊导出内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
oracle数据库导出insert语句
oracle数据库导出insert语句在Oracle数据库中,有时需要将数据导出到其他系统或进行备份。
此时,使用INSERT语句导出数据是一个不错的选择。
本文将介绍如何编写Oracle数据库导出INSERT语句,并提供一些实用技巧。
一、Oracle数据库导出INSERT语句的必要性1.数据迁移:当需要将Oracle数据库中的数据迁移到其他数据库系统时,可以使用INSERT语句将数据导出,然后在目标系统执行相应的INSERT语句将数据导入。
2.数据备份:通过导出INSERT语句,可以将数据库中的数据备份到文件或其他存储介质,以便在数据丢失或损坏时进行恢复。
3.数据分析:将数据导出为INSERT语句格式,可以方便地进行数据分析,例如使用Python、R等编程语言处理数据。
二、导出INSERT语句的方法步骤1.编写SELECT语句:首先,根据需要选择要导出的数据表和字段。
例如,以下SELECT语句表示选择名为“my_table”的表中的所有字段:```SELECT * FROM my_table```2.使用UNION ALL连接多条INSERT语句:为了将SELECT语句查询到的数据分批插入到目标表,需要使用UNION ALL连接多条INSERT语句。
以下是一个示例:```-- 创建一个临时表,用于存放分批插入的数据CREATE TEMPORARY TABLE temp_table AS SELECT * FROM my_tableWHERE 1=1AND (rownum <= 1000)AND (column_name IS NOT NULL);-- 插入第一条INSERT语句INSERT INTO my_tableSELECT * FROM temp_tableWHERE 1=1AND (rownum <= 1000)AND (column_name IS NOT NULL);-- 删除临时表数据DELETE FROM temp_table;-- 插入第二条INSERT语句INSERT INTO my_tableSELECT * FROM temp_tableWHERE 1=1AND (rownum > 1000)AND (column_name IS NOT NULL);-- 删除临时表数据DELETE FROM temp_table;-- 继续插入其他批次数据,直到所有数据导出完毕```3.调整INSERT语句间隔时间:为了避免目标表锁定或导致性能问题,可以设置INSERT语句的执行间隔时间。
oracle不同版本数据库中转文件导入导出详解流程
------------------------------------ 数据库导入导出详细步骤--------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- 1)--导出:(使用sysdba角色)①创建逻辑目录:create directory exp_dir as ‘E:\expdump’;②确认管理员目录select * from dba_directories;③给sunfcbp用户赋予在指定目录的操作权限:grant read,write on directory exp_dir to sunfcbp;④在cmd命令行oracle的bin目录下执行导出数据语句(version值指定目标数据库版本号):export NLS_LANG=AMERICAN_AMERICA.ZHS32GB18030expdp sunfcbp/123 schemas=sunfcbp directory=exp_dir version=11.1.0.6.0dumpfile=sunfcbpdb0821_data.dpexport NLS_LANG=AMERICAN_AMERICA.AL32UTF82)--导入前准备:(使用sysdba角色)①数据库字符集设置:SQL> shutdown immediate;SQL> startup mount;SQL> alter system enable restricted session;SQL> alter system set job_queue_processes=0;SQL> alter database open;SQL> Alter DATABASE myoracle character set INTERNAL_USE ZHS32GB18030; ----- 使用INTERNAL_USE可以跳过超集的检查SQL> STARTUP;--经过以上步骤,服务器的字符集成功被修改成为ZHS32GB18030;②--创建数据表空间create tablespace sunfcbp_datloggingdatafile 'D:\Oracle\oradata\myoracle\SUNFCBP_DA T.DBF'size 50mautoextend onnext 50m maxsize 20480mextent management local;③--创建临时表空间create temporary tablespace sunfcbp_tmptempfile 'D:\Oracle\oradata\myoracle\SUNFCBP_TMP.DBF'size 50mautoextend onnext 50m maxsize 20480mextent management local;④--创建用户sunfcbpcreate user sunfcbp identified by 123default tablespace sunfcbp_dat temporary tablespace sunfcbp_tmp;⑤--创建逻辑目录:create directory dpdata as 'E:\myoraclebeifen'⑥--确认管理员目录select * from dba_directories;⑦--授权sunfcbp用户grant connect, resource to sunfcbp;grant read,write on directory dpdata to sunfcbp;⑧—在cmd命令行环境进入数据库bin目录下:cd D:\Oracle\product\11.1.0\db_1\BINd:3)--导入(cmd命令行数据库bin目录下)①—执行导入语句(sunfcbpdb0821.dp必须放在E:\myoraclebeifen目录下面schemas=sunfcbp为转存文件中用户名):A:导入目标用户名与导出时用户名相同用以下语句:impdp sunfcbp/123 directory=dpdata dumpfile=sunfcbpdb0821.dp schemas=sunfcbpB:导入目标用户名与导出时schemas指定的值不相同时用以下语句:impdp test/123 DIRECTORY=dpdata DUMPFILE=SUNFCBPDB0821_DATA.DP REMAP_SCHEMA=sunfcbp:test---------------------------------------exp, imp命令导入导出-------------------------------------------------导出:导出自己的表:exp userid=sunfcbp/123@myoracle tables=(emp,dept,…..) file=d:\sunfcbp.dp;exp userid=sunfcbp/123@myoracle tables=(emp,dept,…..) file=d:\sunfcbpr.dp rows=n;(只导出表结构)导出其它方案的表:exp userid=system/123@myoracle tables=(sunfcbp.emp,sunfcbp.dept,……) file=d:\e2.dmp;使用直接导出的方式(速度快):exp userid=sunfcbp/123@myoracle tables=(emp,dept,…) file=e:\e3.dp direct=y;导出自己的方案:exp sunfcbp/123@myoracle owner=sunfcbp file=e:\e4.dp;导出其它方案:(system用户必须拥有dba或者exp_full_database的权限)exp system/123@myoracle owner=(system,sunfcbp,…) file=e:\e5.dp;导出数据库:(system用户必须拥有dba或者exp_full_database的权限)exp userid=system/123@myoracle full=y inctype=complete file=e:\e.dp;**************************************************************************导入:导入自己的表:imp userid=sunfcbp/123@myoracle tables=(emp) file=e:\sunfcbp.dp导入表到其它用户(要求system用户必须拥有dba或者imp_full_database的权限):imp userid=system/123@myoracle tables=(emp) file=e:\sunfcbp.dp touser=sunfcbp; 导入表的结构而不导入数据:imp userid=sunfcbp/123@myoracle tables(emp) file=e:\sunfcbp.dp rows=n;只导入表的数据:imp userid=sunfcbp/123@myoracle tables=(emp) file=e:\sunfcbp.dp ignore=y;导入自己的方案:(要求sunfcbp用户必须拥有dba或者imp_full_database的权限)imp userid=sunfcbp/123@myoracle file=e:\xxx.dp;导入其它方案:(要求system用户必须拥有dba或者imp_full_database的权限)imp userid=system/123@myoracle file=e:\xxx.dp fromuser=system touser=sunfcbp; 导入数据库:imp userid=system/123@myoracle full=y file=e:\xxx.dp;oracle dp命令的使用说明expdp命令的使用方法:expdp username/password@server_name dumpfile=xx.dp tables=table1,table2...table31、其中username/password@server_name指的是用户名、密码和服务名2、xx.dp为所导出的文件名3、table1,table2...table3指的是要导入的表的名称,中间以逗号隔开4、注意:导出的文件没有指定固定的目录,文件默认放在oracle\admin\数据库sid\dpdump 目录下。
ORACLE 11g数据导入导出
导入时选 择合理的 parallel, 是可以降 低导入数 据时的时 间的,导 入数据时 指定 parallel 值,实际 是用在了 创建索引 的并行度 上 所以在导 入操作时 选择较大 的并行 度,是可 以大幅度 降低提高 创建索引 的速度, 从而加快 导入时的 速度。当 然度如增果 加并 到 太大的 值,会产 生I/O和 锁之类的 竞争,导 致导入速 度降低。
2)改变表 的owner impdp system/D igicom201 4 DIRECTO RY=exp_d ir2 DUMPFIL E=exp_sc ott.dmp TABLES= scott.dep t REMAP_S CHEMA= scott:syst 先导出 scott用户 中的数 据,然后 将此用户 下的表 dept的归 属权转移 给system 用户
导出完 成:
导出的文 件:
6)带出整 个数据库 在DOS环 境下输入 expdp system/D igicom201 4 directory =exp_dir2 dumpfile = full_demo. dmp logfile = full_demo.
导出成 功:
查看导出 文件:
数据导入:
导出成功 。
导出的文 件:
3)按表名 导出 在DOS中 输入: expdp system/D igicom201 4@myorcl tables=st udent dumpfile= table_dem o.dmp directory =exp_dir2 logfile=ta ble_demo.l og
执行结束
查看dept 表的 owner
3)导入表 空间 impdp system/D igicom201 4 DIRECTO RY=exp_d ir2 DUMPFIL E=tablesp ace_demo .dmp TABLES PACES=s ystem;
oracle 数据迁移方案
Oracle 数据迁移方案1. 简介随着业务的发展和系统的升级,数据迁移已经成为一个不可避免的任务。
在Oracle 数据库中,数据迁移主要包括迁移数据表、迁移数据对象以及导出和导入数据等方面。
本文将介绍一些常用的 Oracle 数据迁移方案。
2. 数据表迁移2.1 导出数据表Oracle 数据表的导出可通过使用expdp命令来实现。
该命令可以将指定的数据表导出为二进制格式的文件,以供后续导入使用。
以下是导出数据表的步骤:1.打开终端或命令行窗口,登录到数据库。
2.运行以下命令导出数据表:expdp username/password@connect_string tables=table1,table2 directory=datapump_dir dumpfile=tables.dmp logfile=tables.log–username/password:登录数据库的用户名和密码。
–connect_string:数据库连接字符串。
–tables:要导出的数据表名称,多个表名之间用逗号分隔。
–directory:导出文件存储的目录。
–dumpfile:导出文件的名称。
–logfile:导出日志文件的名称。
2.2 导入数据表使用impdp命令可以将之前导出的数据表文件导入到目标数据库中。
以下是导入数据表的步骤:1.打开终端或命令行窗口,登录到目标数据库。
2.运行以下命令导入数据表:impdp username/password@connect_string directory=datapump_d ir dumpfile=tables.dmp logfile=import.log–username/password:登录目标数据库的用户名和密码。
–connect_string:目标数据库的连接字符串。
–directory:导出文件存储的目录。
–dumpfile:导出文件的名称。
–logfile:导入日志文件的名称。
Oracle数据库导入导出方法汇总
Oracle数据库导入导出方法:1.使用命令行:数据导出:1.将数据库TEST完全导出,用户名system密码manager导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2.将数据库中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:\data\newsmgnt.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.dmpimp aichannel/aichannel@HUST full=y file= d:\data\newsmgnt.dmp ignore=y上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y 就可以了。
2.将d:\daochu.dmp中的表table1导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)3.不同名用户之间的数据导入:imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbimp.log;2.plsql:数据导出:TOOLS-Export user objects(用户对象)TOOLS-Export tables(表)数据的导入:TOOLS-Import tablesOracle Import(表) SQL Inserts(用户对象)也可以将用户对象的语句拷贝出来,粘贴到Command Window这样的好处是可以看到执行的过程。
oracle数据库导入导出语句
oracle数据库导⼊导出语句
oracle的exp/imp命令⽤于实现对数据库的导出/导⼊操作;exp命令⽤于把数据从远程数据库服务器导到本地,⽣成.dmp⽂件;imp命令⽤于把本地的数据库.dmp⽂件从本地导⼊到远程的oracle数据库中
1 将数据库test完全导出.⽤户名system/manager导出到D:daochu.dmp 代码如下:
exp file=d:daochu.dmp full=y
2.将数据库中system⽤户与sys⽤户的表导出代码如下:
exp file=d:daochu.dmp owner=(system,sys)
3.将数据库中的表table1 table2 导出代码如下:
exp file:= d:daochu.dmp tables=(table1,table2)
4.将数据库中的表table1中的字段filed1以"00"打头的数据导出代码如下;
exp file:=d:daochu.dmp tables=(table1) query="where filed1 like '00%'"
5.将D:daochu.dmp中的数据导⼊到test数据库中代码如下
imp file:=d:doachu.dmp (这样写的肯定会报错,因为数据库中已经存在表了,对该表就不能导⼊)
所以要在后⾯加上ignore=y就可以了
imp file:=d:daochu.dmp ignore=y 就可以了
6.将d:daochu.dmp中的表table1导⼊到test的数据库中
imp file:=d:daochu.dmp tables=(table1);。
Oracle导入导出数据的几种方式
Oracle导⼊导出数据的⼏种⽅式oracle导⼊导出数据1.导出dmp格式⽂件--备份某⼏张表exp smsc/smsc file=/data/oracle_bak/dmp/bakup0209_2.dmp tables=\(send_msg_his,send_msg,recv_msg_his,recv_msg\)--备份整个数据库--⽅式1exp smsc/smsc file=/data/oracle_bak/dmp/bakupsmmc0209_2.dmp full=y--⽅式2exp cop/cop@133.96.84.39:1521/coprule file=/home/oracle/cop_20160902.dmp owner=cop log=/home/oracle/cop.log--本机上exp zop/zop@orcl file= D:\zop_bak.dmp owner=zop log=D:\zop_ba.log2.导⼊dmp格式⽂件--数据的导⼊--1 将D:\daochu.dmp 中的数据导⼊ TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmpimp aichannel/aichannel@TEST full=y 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能否连上。
oracle数据的导入导出(两种方法三种方式)
oracle数据的导⼊导出(两种⽅法三种⽅式)⼤概了解数据库中数据的导⼊导出。
在oracle中,导⼊导出数据的⽅法有两种,⼀种是使⽤cmd命令⾏的形式导⼊导出数据,另⼀种是使⽤PL/SQL⼯具导⼊导出数据。
1,使⽤cmd命令⾏导⼊导出数据 1.1整库导出 整库导出:exp 管理员账号/密码 full=y;//参数full表⽰整库导出。
导出后会在当前⽬录下⽣成⼀个EXPDAT.DMP的⽂件,此⽂件为备份⽂件。
如果想导出数据到指定位置,并且取个名字,需要添加file参数。
例如:exp system/123456 file= C:\person.dmp full=y。
1.2整库导⼊ 整库导⼊:imp 管理员账号/密码 full=y file=C:\person.dmp。
1.3使⽤cmd命令按⽤户导出导⼊ 1.3.1 按⽤户导出:exp 管理员账号/密码 owner=⽤户名 file=C:\person.dmp。
1.3.2 按⽤户导⼊:imp 管理员账号/密码 file=C:\person.dmp fromuser=⽤户名。
1.4使⽤cmd命令按表导出导⼊ 1.4.1按表导出:exp 管理员账号/密码 file=person.dmp tables=t_person,t_student。
1.4.2按表导⼊:imp 管理员账号/密码 file =person.dmp tables=t_person,t_student。
2.)使⽤PL/SQL 开发⼯具导出导⼊数据 pl/sql⼯具包含三种⽅式导出oracle表结构和表数据,分别为:oracle export,SQL inserts,pl/sql developer。
它们的含义如下: 第⼀种oracle export:导出的是.dmp格式的⽂件,.dmp⽂件是⼆进制⽂件,可以跨平台,包含权限等。
第⼆种SQL inserts :导出的是.sql格式的⽂件,可以⽤⽂本编辑器查看,通⽤性⽐较好,效率不如第⼀种,适合⼩数据量的导⼊导出。
oracle数据库备份(导入导出dmp)
连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
JServer Release 8.1.7.0.0 - Production
经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
远程
exp scott/tiger@192.168.0.1:1521/kims file=e:\dc.dmp
导入:
imp aichannel/aichannel@HUST full=y file=d:\data\newsmgnt.dmp ignore=y
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
ORA1008-Oracle导入导出
Oracle 10G EXP和IMP使用说明Exp和imp导入导出和oracle版本没有关系,不同数据库的版本可以互导。
而empdp和impdp,如果在oralce11g导出的数据库,导入时只能导入到oracle11g数据库。
同时exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
调用EXP1.将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2.将数据库中system用户与sys用户的表导出(如果不是本台机要加上ip地址,车管所的是导入服务器的,所以要加服务器的ip地址)3.将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmptables=(inner_notify,notify_staff_relat)4.将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ‘00%‘\"调用IMP(先建立一个用户,再建一个连接,最后倒入数据)1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp 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)6. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y7. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par参数文件:#Import the sample tables used for the Oracle8i Database Administrator‘sBible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import8. 增量导入imp system./manager inctype= RECTORE FULL=Y FILE=AOracle 10g EXPDP和IMPDP使用说明Oracle Database 10g引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中.数据泵导出导入(EXPDP和IMPDP)的作用1,实现逻辑备份和逻辑恢复.2,在数据库用户之间移动对象.3,在数据库之间移动对象4,实现表空间搬移.数据泵导出导入与传统导出导入的区别在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户段工具程序,它们既可以在客户端使用,也可以在服务段使用.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件.数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdp scott/tiger ATTACH=scott.export_job2. CONTENT该选项用于指定要导出的内容.默认值为ALLCONTENT={ALL | DATA_ONLY | METADATA_ONLY}当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DA TA_ONLY时,只导出对象数据,为METADA TA_ONLY时,只导出对象定义Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dumpCONTENT=METADATA_ONLY3. DIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS 目录Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump先在对应的位置创建物理文件夹,如D:\backup建立目录:create or replace directory backup as '/opt/oracle/utl_file'SQL>CREATE DIRECTORY backup as ‘d:\backup’;SQL>grant read,write on directory backup to SYSTEM;查询创建了那些子目录:SELECT * FROM dba_directories;4. DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmpDUMPFILE=*directory_object:+file_name *,….+Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp5. ESTIMATE指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKSEXTIMATE={BLOCKS | STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICSDIRECTORY=dump DUMPFILE=a.dump6. EXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为NEXTIMATE_ONLY={Y | N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y7. EXCLUDE该选项用于指定执行操作时释放要排除对象类型或相关对象EXCLUDE=object_type*:name_clause+ *,….+Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE 和INCLUDE不能同时使用Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW8. FILESIZE指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)9. FLASHBACK_SCN指定导出特定SCN时刻的表数据FLASHBACK_SCN=scn_valueScn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmpFLASHBACK_SCN=35852310. FLASHBACK_TIME指定导出特定时间点的表数据FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”11. FULL指定数据库模式导出,默认为NFULL={Y | N}为Y时,标识执行数据库导出.12. HELP指定是否显示EXPDP命令行选项的帮助信息,默认为N当设置为Y时,会显示导出选项的帮助信息.Expdp help=y13. INCLUDE指定导出时要包含的对象类型及相关对象INCLUDE = object_type*:name_clause+ *,… +14. JOB_NAME指定要导出作用的名称,默认为SYS_XXXJOB_NAME=jobname_string15. LOGFILE指定导出日志文件文件的名称,默认名称为export.logLOGFILE=[directory_object:]file_nameDirectory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log16. NETWORK_LINK指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.17. NOLOGFILE该选项用于指定禁止生成导出日志文件,默认值为N.18. PARALLEL指定执行导出操作的并行进程个数,默认值为119. PARFILE指定导出参数文件的名称PARFILE=[directory_path] file_name20. QUERY用于指定过滤导出数据的where条件QUERY=[schema.] [table_name:] query_clauseSchema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADA TA_ONLY,EXTIMA TE_ONLY,TRANSPORT_TABLESPACES 等选项同时使用.Expdp scott/tiger directory=dump dumpfiel=a.dmpTables=emp query=’WHERE deptno=20’21. SCHEMAS该方案用于指定执行方案模式导出,默认为当前用户方案.22. STATUS指定显示导出作用进程的详细状态,默认值为023. 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使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.C REATE DIRECTORY dump dir AS ‘D:DUMP’;GRANT READ, WIRTE ON DIRECTORY dump_dir TO scott;1,导出表Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp logfile=exp.log; 2,导出方案Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system,scott logfile=/exp.log;3.导出表空间Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02 logfile=/exp.log;4,导出数据库Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y logfile=/exp.log;使用IMPDPIMPDP命令行选项与EXPDP有很多相同的,不同的有:1,REMAP_DA TAFILE该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.REMAP_DATAFIEL=source_datafie:target_datafile2,REMAP_SCHEMA该选项用于将源方案的所有对象装载到目标方案中.REMAP_SCHEMA=source_schema:target_schema3,REMAP_TABLESPACE将源表空间的所有对象导入到目标表空间中REMAP_TABLESPACE=source_tablespace:target_tablespace4.REUSE_DA TAFILES该选项指定建立表空间时是否覆盖已存在的数据文件.默认为NREUSE_DATAFIELS={Y | N}5.SKIP_UNUSABLE_INDEXES指定导入是是否跳过不可使用的索引,默认为N6,SQLFILE指定将导入要指定的索引DDL操作写入到SQL脚本中SQLFILE=[directory_object:]file_nameImpdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql7.STREAMS_CONFIGURATION指定是否导入流元数据(Stream Matadata),默认值为Y.8,TABLE_EXISTS_ACTION该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIPTABBLE_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_nameDatafile_name用于指定被复制到目标数据库的数据文件Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmpTRANSPORT_DATAFILES=’/user01/data/tbs1.f’调用IMPDP1, 导入表Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp logfile=/exp.log;Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmpTABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM logfile=/exp.log;第一种方法表示将DEPT和EMP表导入到SCOTT方案中,第二种方法表示将DEPT和EMP表导入的SYSTEM方案中.注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.2,导入方案Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott logfile=/exp.log;Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmpSCHEMAS=scott REMAP_SCHEMA=scott:system logfile=/exp.log;3,导入表空间Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01 logfile=/exp.log;4,导入数据库Impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y logfile=/exp.log;数据库冷备冷备份数据必须是数据库不在open状态下,对数据库进用数据备份。
oracle的导出命令
oracle的导出命令资料来⾃百度搜索,测试全库备份正常导出。
常⽤的oracle数据库备份(导⼊/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导⼊导出⼯具,后者是Oracle10g后出现的,下⾯进⾏分别介绍!1.exp/imp三种导⼊导出类型Oracle⽀持三种导⼊导出类型分别是表⽅式(T⽅式),⽤户⽅式(U⽅式),全库⽅式(Full⽅式)A: 表⽅式(T⽅式)备份(exp)某个⽤户模式下指定的对象(表),exp guwei/ai123456@10.21.19.63/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmplog=exp_table.log tables=USER_INFO,POLICY_INFO恢复(imp)备份数据中的指定表,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOB:⽤户⽅式(U⽅式)备份(exp)某个⽤户模式下的所有对象,exp jnth/thpassword@oracle owner=guwei rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log恢复(imp)备份数据的全部内容,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log恢复(imp)备份数据中的指定表,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOC:全库⽅式(Full⽅式)备份(exp)完整的数据库,exp system/systempassword@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=exp_table.dmp log=exp_table.log导⼊(imp)完整数据库,imp system/systempassword@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=exp_table.dmp log=exp_table.log 导出导⼊的优缺点优点:简单易⾏;可靠性⾼;不影响数据库的正常运⾏。
Oracle数据导入导出impexpsp2-0734:未知的命令开头imp忽略了剩余行默认。。。
Oracle数据导⼊导出impexpsp2-0734:未知的命令开头imp忽略了剩余⾏默认。
sp2-0734:未知的命令开头'imp 忽略了剩余⾏默认分类应该是在cmd的dos命令提⽰符下执⾏,⽽不是在sqlplus⾥⾯。
但是格式⼀定要类似于:imp PERSONNEL_MANAGE/MWQ@DBSQL full=y file=C:\personnel_manage.dmpignore=y谨以此纪念我的粗⼼。
我错了。
imp 命令是在dos提⽰符下执⾏的。
直接cmd后执⾏⽽不是在sql下执⾏的数据导出:1 将数据库TEST完全导出,⽤户名system 密码manager 导出到D:daochu.dmp中exp system/manager@TEST file=d:daochu.dmp full=y2 将数据库中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数据库中。
PLSQL导入导出Oracle数据库方法
PLSQL导入导出Oracle数据库方法在Oracle数据库中,我们可以使用PL/SQL来导入和导出数据。
下面是一些常用的方法:1. 使用SQL*Loader工具导入数据:SQL*Loader是Oracle提供的一个强大的数据导入工具。
通过创建一个控制文件和数据文件,可以将数据从外部文件导入到Oracle表中。
以下是一个简单的示例:```sqlLOADDATAINFILE 'data.txt'INTO TABLE empFIELDSTERMINATEDBY','```2. 使用Oracle Data Pump导入导出数据:Oracle Data Pump是Oracle 10g之后引入的一种高效的导入导出工具。
它提供了更快的数据加载和卸载速度,并且可以在导入导出过程中进行并行操作。
以下是一个简单的示例:```sql--导出数据EXPORT SCHEMA scott DIRECTORY=data_pump_dirDUMPFILE=scott.dmp--导入数据IMPORT SCHEMA scott DIRECTORY=data_pump_dirDUMPFILE=scott.dmp```3.使用PL/SQL脚本导入导出数据:我们可以使用PL/SQL脚本编写自定义的导入导出逻辑。
以下是一个简单的示例:```sql--导出数据DECLAREfile_handle UTL_FILE.FILE_TYPE;emp_rec emp%ROWTYPE;BEGINfile_handle := UTL_FILE.FOPEN('DATA_DIR', 'emp_data.txt', 'W');FOR emp_rec IN (SELECT * FROM emp) LOOPUTL_FILE.PUT_LINE(file_handle, emp_rec.empno , ',' ,emp_rec.ename , ',' , emp_rec.job);ENDLOOP;UTL_FILE.FCLOSE(file_handle);END;--导入数据DECLAREfile_handle UTL_FILE.FILE_TYPE;line_text VARCHAR2(200);BEGINfile_handle := UTL_FILE.FOPEN('DATA_DIR', 'emp_data.txt', 'R');LOOPUTL_FILE.GET_LINE(file_handle, line_text);--解析并插入数据ENDLOOP;UTL_FILE.FCLOSE(file_handle);END;```这是一些常用的PL/SQL导入导出Oracle数据库的方法。
Oracle数据库impexp导入导出命令(备份与恢复)
Oracle数据库imp/exp导入导出命令(备份与恢复)Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。
今天在这里主要讲一下用命令行来操作oracle数据导入和导出:备份数据1、获取帮助:exp help=y2. 导出一个完整数据库exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =yimp tax/test@tax file=d:/dbbak.dmp full=y3 、导出一个或一组指定用户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、导出一个或多个指定表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=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp 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)、“完全”增量导出(Complete)
即备份三个数据库,比如:
exp system/manager inctype=complete file=040731.dmp
(2)、“增量型”增量导出
备份上一次备份后改变的数据,比如:
exp system/manager inctype=incremental file=040731.dmp
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
2、 增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
优点:增量备份体积小,备份不影响正常业务。
缺点:对于备份集、日志文件和备份策略等需要有一定的维护成本和学习成本。
从数据库备份的对象来看,备份工作可以使用RMAN进行物理方式的备份,也可以使用exp/expdp工具进行逻辑方式的备份。物理备份又可以分为两种类型:1镜像复制备份:把数据文件,控制文件,归档日志文件进行操作系统复制,通过RMAN的copy命令实现
1. Oracle 数据库提供了多种数据库备份与恢复的解决方案,其中包括基于RMAN的备份、用户管理的备份、Data Pump Export、闪回技术等,这些主流的备份方式有不同的特性,请结合您的经历谈谈您对它们的理解。
oracle19c之导入、导出及脚本
oracle19c之导⼊、导出及脚本 记录⼀下oracle两种常⽤的导⼊导出⽅式:exp、imp;spool、SQL*Loader及其脚本。
⼀、exp与imp导⼊导出 1、exp导出操作exp c##sl/123456 buffer=64000 file=./full.sql full=y --导出整个数据库exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##sl --导出⽤户c##sl下的对象exp c##sl/123456 buffer=64000 file=./book.sql tables=book --导出book表exp c##sl/123456 buffer=64000 file=./book.sql tables=book,book2; --导出book、book2表 2、imp导⼊操作exp c##sl/123456 buffer=64000 file=./book.sql tables=bookdrop table book;imp c##sl/123456 buffer=64000 file=./book.sql tables=book --需要先删除表,再导⼊,否则报错exp c##sl/123456 buffer=64000 file=./book.sql tables=bookimp c##sl/123456 buffer=64000 ignore=y file=./book.sql tables=book --只会导⼊主键不冲突的数据,冲突的忽略exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##slimp c##sl/123456 buffer=64000 ignore=y file=./sl.sql full=y --导⼊sl.sql中的全部⽂件imp c##sl/123456 buffer=64000 ignore=y file=./sl.sql tables=book,book2 --导⼊sl.sql中的表book、与book2 说明:tables指定导⼊或导出的表;full=y表⽰导⼊或导出全部;ignore=y表⽰跳过主键冲突执⾏ ⼆、spool、SQL*Loader导⼊导出 准备表与数据CREATE TABLE book(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,0) DEFAULT NULL,update_time date DEFAULT NULL,create_time date DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into book values ('1','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('2','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('3','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1); 1、spool导出操作 创建sql⽂件book_spoolout.sqlset echo offset heading offset feedback offset pagesize 0set linesize 1000spool book.datselect id||','||name||','||author||','||price||','||to_char(update_time,'YYYY-MM-DD hh24:mi:ss')||','||to_char(create_time,'YYYY-MM-DD hh24:mi:ss')||','||is_deleted from book;spool off 登录sqlplus,执⾏@导出⽂件[root@localhost tmp]# sqlplus c##sl/123456SQL> @book_spoolout.sql; 导出数据⽂件book.dat如下:1,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,12,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,13,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,1 说明: b、这⾥登录数据库⽬录与sql⽂件、导出⽂件⽬录⼀致; c、如果导出⽬录没有写权限,会报错“⽆法创建 SPOOL ⽂件 "book.dat"当前未假脱机”,注意赋权; d、要把控制⽂件写⼊⽂件中保存,如果直接复制到sqlplus中执⾏,导出的⽂件中⾸尾⾏含有其他命令或sql语句; 2、SQL*Loader导⼊操作 创建控制⽂件book.ctlload datainfile book.datinto table booktruncatefields terminated by ","(ID,NAME,AUTHOR,PRICE,UPDATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",CREATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",IS_DELETED) 执⾏导⼊命令,将上⾯的book.dat导⼊数据库sqlldr userid=c##sl/123456 control=book.ctl data=book.dat 注意: a、这⾥的控制⽂件与数据⽂件在同⼀⽬录下 b、truncate是删除原表数据,还有insert、append、replace等 c、fields terminated by是字段分隔符 三、脚本 可以看到spool、sql loader的导⼊导出还是挺复杂的,下⾯整理出通⽤性更强的脚本 1、导出 准备表与数据CREATE TABLE music(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,2) DEFAULT NULL,update_time varchar2(19) DEFAULT NULL,create_time varchar2(19) DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into music values ('1','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('2','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('3','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1'); 创建脚本oddpe#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddp music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}DATAFILE=${2}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdof) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`SPOOLOUTSQL=${DATAPATH}/${TABLE}_spoolout.sqlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_unload_${TODAY}.logsqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50 pagesize 0 linesize 1000spool ${SPOOLOUTSQL}declarev_colcount number :=0;begindbms_output.put_line('select');for col in (select column_namefrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.column_name);elsedbms_output.put_line(chr(9) || '||' || '''${FIELD}''' || '||' );dbms_output.put(chr(9) || col.column_name);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.put('||' || '''${ROW}''');dbms_output.new_line;dbms_output.put_line('from ' || '${TABLE};');end;/spool offexiteofecho "`date +%T`: 开始导出数据!" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eofset echo off heading on feedback off pagesize 0 linesize 1000set termout off trimspool on numwidth 24 arraysize 1000 verify off newpage 0 space 0spool ${DATAFILE}.tmp@${SPOOLOUTSQL}spool offexiteofif [ $? -ne 0 ];thenecho "`date +%T`: 导出${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1else#去除中间空⾏grep . ${DATAFILE}.tmp>${DATAFILE}rm -f ${DATAFILE}.tmpecho "`date +%T`: 导出${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏⽰例,导出music表的数据到music.dat⽂件,以|!?|分隔字段,以@#$结束⼀⾏./oddpe music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 2、导⼊ 创建脚本oddpi#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddpi music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdocase ${arg} inf) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`CTLFILE=${DATAPATH}/${TABLE}.ctlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_load_${TODAY}.logecho "`date +%T`: 创建控制⽂件" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50spool ${CTLFILE}declarev_colcount number :=0;begindbms_output.put_line('load data');dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');dbms_output.put_line('into table '||'${TABLE}');dbms_output.put_line('truncate');dbms_output.put_line('fields terminated by '|| '''${FIELD}''');dbms_output.put_line('trailing nullcols');dbms_output.put_line('(');for col in (select column_name,casewhen data_type = 'NUMBER' then column_name || ' "nvl(rtrim(:' || column_name || '),' || '0.00' || ')"' else column_name || ' "nvl(rtrim(:' || column_name || '),' || ''' ''' || ')"'end xfrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.x);elsedbms_output.put_line(',');dbms_output.put(chr(9) || col.x);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.new_line;dbms_output.put_line(')');end;/spool offset feedback oneofecho "`date +%T`: 开始导⼊数据!" 2>&1|tee -a ${LOGFILE}sqlldr userid=${USERPASS} control=${CTLFILE} log=${LOGFILE} data=${DATAFILE} direct=trueif [ $? -ne 0 ];thenecho "`date +%T`: 导⼊${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1elseecho "`date +%T`: 导⼊${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏脚本,导⼊数据./oddpi music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 说明:对导⼊脚本中dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');的解析 load data的str属性表⽰数据的换⾏符,⽐如3^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!2^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!1^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!! a、"\n"是⾃带的换⾏符,因为数据⼿动换⾏了,所以str后⾯除了指定的换⾏符"!!"还有"\n" b、有些⽂件中⼿动的换⾏符不是"\n"⽽是"\r\n",这时对应语句改为......"str '!!\r\n'"...... c、str后⾯还可以跟X+转成raw类型的字符,下⾯的语句执⾏效果相同。
oracle数据库导入导出方法
oracle数据库导⼊导出⽅法Oracle Database 10g以后引⼊了最新的数据泵(Data Dump)技术,使DBA或开发⼈员可以将数据库元数据(对象定义)和数据快速移动到另⼀个oracle数据库中。
数据泵导出导⼊(EXPDP和IMPDP)的作⽤ 1、实现逻辑备份和逻辑恢复。
2、在数据库⽤户之间移动对象。
3、在数据库之间移动对象 4、实现表空间搬移。
数据泵导出导⼊与传统导出导⼊的区别:在10g之前,传统的导出和导⼊分别使⽤EXP⼯具和IMP⼯具,从10g开始,不仅保留了原有的EXP和IMP⼯具,还提供了数据泵导出导⼊⼯具EXPDP和IMPDP.使⽤EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户段⼯具程序,它们既可以在客户端使⽤,也可以在服务器段使⽤。
EXPDP和IMPDP是服务端的⼯具程序,他们只能在ORACLE服务端使⽤,不能在客户端使⽤IMP只适⽤于EXP导出⽂件,不适⽤于EXPDP导出⽂件;IMPDP只适⽤于EXPDP导出⽂件,⽽不适⽤于EXP导出⽂件。
今天我在导⼊同事给我的数据⽂件时,总是报IMP-00038错误,提⽰,⽆法转换为环境字符集句柄,造成这种错误的原因⼀般是数据库版本不匹配,但是我们使⽤的都是oracle11g,就排除了这种可能。
最后发现原因是他是使⽤数据泵导出的数据⽂件,⽽我使⽤传统imp命令导⼊是不可以的,后续改为使⽤impdp数据泵导⼊成功。
下⾯是我使⽤数据泵导⼊数据⽂件的完整过程:1、使⽤system⽤户登录数据库,创建新⽤户usertest(新建⽤户时⽤户名最好和数据⽂件导出时的⽤户名相同),表空间可以使⽤系统默认的也可以⾃⼰新建⼀个表空间。
sql代码如下:新建⽤户使⽤oracle默认表空间:create user usertest identified by usertest;新建表空间:create tablespace user_alldatafile 'D:/dev/oracle/tablespace/user_all.dbf'size 300Mautoextend onnext 50Mmaxsize unlimited新建⽤户(设置默认表空间):create user usertest identified by usertest default tablespace user_all;2、对新建的⽤户赋权限,dba、connect、resource。
oracle中imp导入导出命令详解
oracle中imp命令详解Oracle的导入实用程序(Importutility)允许从数据库提取数据,并且将数据写入操作系统文件。
imp使用的基本格式:imp [username[/password[@service]]],以下例举imp常用用法。
1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=d:\daochu.dmp log=d:\daochu.log full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seapark impsystem/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)6. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)log=paycheck, filesize=1G full=y7. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par参数文件:#Import the sample tables used for the Oracle8i Database Administrator's Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import8. 增量导入imp system./manager inctype= RECTORE FULL=Y FILE=A Oracle imp/expC:Documentsand Settingsadministrator>exp help=yExport: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 通过输入 EXP命令和用户名/口令,您可以后接用户名/口令的命令:例程: EXPSCOTT/TIGER或者,您也可以通过输入跟有各种参数的 EXP命令来控制“导出”按照不同参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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=y2 将数据库中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上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。
不少情况我是将表彻底删除,然后导入。
注意:你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。
可以用tnsping TEST 来获得数据库TEST能否连上。
数据导出:exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbfull.log;导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!同名用户之间的数据导入:imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbimp.log full=y不同名之间的数据导入:imp system/test@xe fromuser=hkb touser=hkb_newfile=c:\orabackup\hkbfull.dmplog=c:\orabackup\hkbimp.log;oracle数据库的导入导出(imp和exp)前提是源库和目标库的user和tablespace一样--------------------------------------------------------------------------------------------------------------------------oracle数据库的导出:1、先在运行里输入cmd命令;2、用cd命令切换到oracle安装目录的bin目录下,比如我的目录是:E:\oracle\product\10.2.0\db_1\BIN;3、exp test_user/test_user@testserver file=E:\testserver.dmpowner=test_user即可导出test_user的库,exp命令的参数挺多,请google 一下;--------------------------------------------------------------------------------------------------------------------------oracle数据库的导入:1、先在运行里输入cmd命令;2、用cd命令切换到oracle安装目录的bin目录下,比如我的目录是:E:\oracle\product\10.2.0\db_1\BIN;3、imp test_user/test_user@testserver file=E:\testserver.dmp fromuser=test_user touser=test_user grants=n即可导入test_user的库,imp命令的参数挺多,请google一下;----------------------------------------------------------------------------------------------------------------------------上面exp和imp能够成功的前提是源库和目标库的user和tablespace一样,如果不一样可以用如下的方法解决:(查看属于哪个表空间语句select table_name,tablespace_name fromuser_tables;)这里假设:我的源库的user是test_user、数据表空间是data_test、临时表空间是temp_test以下是在目标oracle上执行.先以system登录oracle//创建临时表空间:create temporary tablespace temp_testtempfile'E:\oracle\product\10.2.0\oradata\testserver\temp_test01.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//创建数据表空间:create tablespace data_testloggingdatafile'E:\oracle\product\10.2.0\oradata\testserver\data_test01.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//创建用户并指定表空间create user test_user identified by test_user default tablespace data_test temporary tablespace temp_test;//授权用户grant connect,resource,dba to test_user;//先收回该用户的默认表空间revoke unlimited tablespace from test_user;//在users表空间上给该用户分配0配额alter user test_user quota 0 on users;//改变该用户的表空间为data_testalter user test_user quota unlimited on data_test;//以下执行imp就可以了。
oracle exp/imp命令详解E:\>exp help=y通过输入 EXP 命令和用户名/口令,您可以在用户 / 口令之后的命令:实例: EXP SCOTT/TIGER或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”的运行方式。
要指定参数,您可以使用关键字:格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表USERID 必须是命令行中的第一个参数。
关键字说明(默认)---------------------------------------------------USERID 用户名/口令FULL 导出整个文件 (N)BUFFER 数据缓冲区的大小OWNER 所有者用户名列表FILE 输出文件 (EXPDAT.DMP)TABLES 表名列表COMPRESS 导入一个范围 (Y)RECORDLENGTH IO 记录的长度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 将传输的表空间列表E:\>imp help=y可以通过输入 IMP 命令和您的用户名/口令跟有您的用户名 / 口令的命令:实例: IMP SCOTT/TIGER或者, 可以通过输入 IMP 命令和各种自变量来控制“导入”按照不同参数。