对oracle数据库使用sql脚本进行导入导出

python脚本系列——Plsql批量执行Oracle数据库脚本 5.本脚本执行后,直接执行:@E:\\plsql-python-sql\\finish_sql.txt即可。plsql工具连接oracle数据库不支持批量导入sql脚本,用惯navicat的朋友不太习惯。2.选择File>New>Command Windows(命令窗口)4.想批量执行sql脚本,可以新建一个文本,使用@拼接本地路径。3.输入@符号,之后敲击回车键。从本地选择执行的SQL脚本。1.第一步登录PLSQL 阅读详情

在源数据库

 

1.打开pl/sql界面,tools--->export user objects,选中你的表,导出生成sql脚本,假设取名为create-table.sql,里面包含表结构定义,但没有数据.

 

注意:因为我的表中有clob定义,如果使用常规的toos-->export tables-->sql inserts方式,无法导出.

 

使用oracle exports导出的是dmp文件,包含表结构定义和数据.

使用pl/sql developer导出的是pde文件.

 

在目的数据库(windows)

 

1.进入cmd命令行

 

c:/>sqlplus /nolog

sql>conn 用户名/密码@实例名-----conn sys/密码 @实例名 as sysdba

sql〉@sql脚本名---如:c:/oracle/script1.sql

执行sql脚本

 

首先执行建立表空间/建立用户/给用户授权的脚本,内容如下:

 

----建立表空间----
create tablespace abc_data ---表空间名和源的一致
logging
datafile 'h:/oracle11gdata/MYDB01.dbf'----给数据文件取名
size 50m
autoextend on
next 32m maxsize 2048m
extent management local;

-- Create the user ---用户名和源服务器的一致

create user 名字  identified by "密码"
  default tablespace abc_DATA
  temporary tablespace TEMP
  profile DEFAULT
  password expire;

-- Grant/Revoke role privileges
grant connect to 用户名;
grant dba to 用户名;
grant resource to 用户名;

-- Grant/Revoke system privileges
grant unlimited tablespace to 用户名;


-----在源服务器pl/sql界面中左侧窗口选择用户这一文件夹,选择用户名,在右侧选择view sql,即可得到该用户的创建/赋权的sql语句,注意,密码部分显示为空,自己需要在导出的语句中手工加上密码.

 

为某用户(如user1)赋予访问某个表(如table1)的权限

create user user1  identified by "密码"
  default tablespace abc_DATA
  temporary tablespace TEMP
  profile DEFAULT
  password expire;

-- Grant/Revoke role privileges
grant connect to user1;
grant select on table1的owner.table1 to user1;
-- Grant/Revoke system privileges
grant unlimited tablespace to 用户名;

 

然后执行建立表的脚本create-table.sql,该脚本在源服务器已经导出形成,直接拷贝到目的服务器---注意当前用户身份,应该重新登录切换到你新建的那个用户,不要用sys身份,否则表的owner有问题.

用sql〉@sql脚本名执行

2。导入数据。

 

此处我使用的是在源服务器导出的.dmp文件,

 

可以使用pl/sql图形界面导入

 

也可以在c:/执行命令行

 

imp username/password@SID file=XXX.dmp fromuser=XXX touser=XXX tables=(XXX,XXX)

其中,fromuser若为多个表空间的话,使用()将其括起来:fromuser=(a,b);

touser参数仿fromuser参数;

若只导入一部分表,使用tables参数,用()括起要导入的表;如果想全部导入,不需要指定tables参数

但是,我的源服务器是11g,目的服务器是10g,从高版本到低版本导不进去,s悲剧了。。。

 

解决办法:自己写insert语句,存成脚本,执行,插入数据,现成的数据用不了。

 

/////下面是我自己写了一个bat运行文件,安装oracle之后直接运行即可实现自动执行sql文件的目的.

 

首先,在.sql文件最后一行后面加上" quit;"这句,因为两个sql文件运行的身份不一样,我需要在运行完之后切换用户身份.

 

然后.写一个.bat文件,比如叫做god.bat

 

@echo off
sqlplus sys/sys的密码@实例名 as sysdba @l:/rmsdb.sql/1.sql---建立表空间,建立表的owner,给该用户授权
pause
sqlplus 表的owner/密码@实例名 @l:/rmsdb.sql/2.sql ----建立表
pause
imp 表的owner/表的owner的密码@实例名 file=l:/rmsdb.dmp/20110323.dmp full=y ignore = y---灌数据

 

 

 

/////////////////////

 

导入导出方式总结

 

在命令行中使用exp/imp工具实现oracle数据导出/导入

2
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@HUST 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能否连上。

附录一:
 给用户增加导入数据权限的操作
 第一,启动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
      或者 imp userid=system/manager full=y file=filename.dmp

 执行示例:
 F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.

连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表                  "INNER_NOTIFY"          4行被导入
准备启用约束条件...
成功终止导入,但出现警告。

 
附录二:
 Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
  先建立import9.par,
  然后,使用时命令如下:imp parfile=/filepath/import9.par
  例 import9.par 内容如下:
        FROMUSER=TGPMS      
        TOUSER=TGPMS2     (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)         
        ROWS=Y
        INDEXES=Y
        GRANTS=Y
        CONSTRAINTS=Y
        BUFFER=409600
        file==/backup/ctgpc_20030623.dmp
        log==/backup/import_20030623.log

以下我自己补充:
1.在导入导出命令中加上feedback=1000可以让过程显示一个不断增多的“...”,以改变以往的闪烁的光标

PS:IMP命令

命令参数说明 关键字 说明(默认)
---------------------------------------------------
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 选定导出表子集的子句

 

EXP命令

命令参数说明

关键字 说明(默认)   
----------------------------------------------
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)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)

r />FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

 

/////////////////

 

另,把建表语句脚本,如上文的create-table.sql,使用powerdesigner,把.sql文件转换成.pdm文件,即物理模型文件,这样做的结果是,会自动生成这些表的表和字段定义图,表的ER图等等一张大图,类似vs2008开发工具中根据源码生成类图的那个工具,很速度,很好用,很清楚...

 

方法,新建一个physical data model, 然后, 找到database-->database reverse engine,选择你的.sql文件做为脚本,ok即可.

 

新建physical data model时,DBMS的文件夹在program files/sybase/powerdesigner12/resource file/DBMS,指明之后,会发现DBMS那项多了很多数据库选项,选择你的.sql文件使用的数据库平台即可(我用的oracle 10g).当时无意中更改了这个文件夹,结果s活新建不了pdm文件,那边等着我这封邮件呢...我干脆不折腾了,找了一个旧的pdm文件打开,把里面旧的ER图什么的全选再删除,然后点选database-->database reverse engine,选择新的.sql文件做为脚本,ok然后另存.就生成了我需要的pdm,发之...过程很对付,但结局还不错.

Oracle批量导入数据(附带脚本 Oracle批量导入数据 阅读详情

相关推荐

PCIe(Peripheral Component Interconnect Express)的带宽和速率

PCIe带宽与速率解析 PCIe的速率指物理层传输速度(GT/s),而带宽是实际有效数据吞吐量(GB/s)。不同PCIe版本采用不同编码方式: PCIe 1.0-2.0:8b/10b编码(80%效率) PCIe 3.0+:128b/130b编码(≈98.5%效率) 单向峰值带宽速查(单位:GB/s): 版本 x1 x4 x8 x16 PCIe3 0.98 3.94 7.88 15.75 PCIe4 1.97 7.88 15.75 31.51 PCIe5 3.94 15.75 31.51 63.02 PCIe

MHD0815的博客 328

PLSQL导入SQL文件

一般项目都有基础表PLSQL导入.sql文件方式应该很多介绍一种比较快的方式,至少我这边算顺利关于PLSQLsql window和 command window的区别sql window是sql脚本编辑窗口,如果需要运行,就必须选中一段代码F8执行 command window:命令窗口,类似于oracle自带交互式查询工具sql*plus 选择Command Window输入@然后回车选择你要导入的sql文件...

tiantiantbtb的博客 1万+

[特殊字符]用Python爬取中国裁判文书网案例信息:从爬虫到数据可视化全流程实战(附代码)

✅ 分析裁判文书网的网页结构;✅ 自动化爬取案件信息;✅ 解析加密参数并获取数据;✅ 数据可视化图表输出;✅ 模块化构建爬虫系统。

2201_76125261的博客 2799

关于plsql导入sql文件脚本问题

oracle数据库使用plsql导入两种类型sql脚本的方法

weixin_44597476的博客 3588

如何在PL/SQL Developer15中导入.sql文件、执行sql脚本

本帖旨在回答如何在PL/SQL Developer15中导入.sql文件、执行sql脚本的问题

Xdh20020828的博客 3109

ORACLE数据库DBA运维常用语句脚本

一个牛逼的程序员,都是玩linux系统的,linux系统也有比windows更好的权限机制,故大部分公司都是在linux上部署oracle,本文主要以linux系统(CentOS-6.x)为基础与众多小伙伴进行探讨。当然windows系统脚本命令也与这差不多 楼主以前在税务方面做了快一年的数据库运维,大数据平台hivesql这些也在从事着,加上大学期间所学的sql server,算是对入门学习数......

神芷迦蓝寺 6087

Oracle数据库数据导入导出实战指南

SQLLoader工作模式分为两种:常规模式(Conventional Path)和直接路径模式(Direct Path)。在常规模式下,SQLLoader会将数据插入到数据库表中,同时确保触发器、约束、索引等数据库对象正常工作。而在直接路径模式下,它会绕过这些对象,直接向数据文件写入数据,大大提高了导入效率。直接路径模式是处理大量数据导入的首选,尤其是在数据仓库环境中。

weixin_36184718的博客 923

oracle数据库使用笔记一

  最近做个一个项目是使用oracle数据库的,在使用过程中会用到各种知识点,所以记下来方便自己查阅,同时跟大家分享。 1、字符集乱码问题   字符乱码一般都是服务器端跟客户端字符编码不一致导致,首先查询服务器端字符编码:   SQL> select * from V$NLS_PARAMETERS;      PARAMETER             VALUE      -...

weixin_30443747的博客 108

Oracle手边常用70则脚本知识汇总

数据库基本介绍 2 数据库使用的注意事项3 数据库生成的默认用户4 修改用户密码5 Spool截取屏幕内容6 SQl语句参数值设置7 创建用户与密码 8 删除用户以及其用户下对象 9 查看表结构12 回收授权13 允许授权的对象继续授权14 账户锁定15 解锁账户16 要求用户定期修改密码18 表的相关介绍19 修改表20 修改默认日期格式21 表自身复制数据22 内置函数之空值替换23 合

远有青山 462

oracle导入导出完整命令,Oracle数据导入导出惯例命令整理

Oracle数据导入导出常规命令整理最近在工作中涉及到对Oracle数据库进行备份、导入、改表等命令操作,现归纳总结出来供日后参阅。1、--创建表空间并赋予表空间大小create tablespace yutengspaceloggingdatafile 'F:\oracle\product\10.2.0\oradata\yuteng\yuteng.dbf'size 54mautoextend o...

weixin_36051281的博客 459

查看数据库使用linux,Linux下oracle数据库常用操作及命令

本文出自 "高兴F" 博客,请务必保留此出处http://gaoxingf.blog.51cto.com/612518/121138Oracle用户下执行:$ sqlplus system/manager @ file.sql 执行sql脚本文件$ sqlplus system/manager 登录sqlplus,使用system用户$ sqlplus /nolog 以不连接数据库的方式启动sql...

weixin_42537450的博客 3068

ORACLE window 下导入导出命令总结

oracle window 下导入导出命令总结 1.直接复制执行slq语句即可。 a).生成导出脚本 select ‘exp ‘||lower(username)|| ‘/zhpt@orcl file=D:\dmp’||lower(username)||’.dmp log=D:\dmp\log’||lower(username)||’.log’ from ALL_USERS where USER...

159635的博客 886

Oracle_导入导出相关脚本

1、oracle导出建库脚本(只导表结构,不包含数据时) 在pl/sql developer中操作(其他操作方式都没这个方便): 选择tools(工具)->import user object(导出用户对象),页面中不选“include storage”,在导出时不会导出表空间信息。不选“include owner”,表和视图、存储过程中不会包含用户信息。 ...

shaiay的博客 1624

psql导入文件_PLSQL导入导出数据库

使用sql脚本plsql完成数据库导入导出1、 准备数据库创建脚本 [SQL]创建数据库表空间:格式:create tablespace 表空间名 datafile ‘数据文件位置及名称’ size 表空间大小实例:create tablespace Test datafile 'F:\app\Administrator\oradata\IMP\Test.dbf' size 1024M;其中...

weixin_39724793的博客 1154

scott.sql脚本 mysql_数据库scott脚本

dblink的介绍及常用管理脚本一、database link概述1、 databaselink是定义一个数据库到另一个数据库的路径的对象,在分布式的系统中一个数据库不可能包含所有的数据信息,有些数据信息是存放在其他的数据库里面的,因此通过dblink就可以实现从其他数据库获取数据的功能。2、databaselin...文章猎人笔记2014-04-27826浏览量Quick BI 数据可视化分...

weixin_39653622的博客 1689

PLSQL导入导出数据库

使用sql脚本plsql完成数据库导入导出 1、 准备数据库创建脚本 [SQL] 创建数据库表空间: 格式:create tablespace 表空间名 datafile ‘数据文件位置及名称’ size 表空间大小 实例:create tablespace Test datafile 'F:\app\Administrator\oradata\IMP\Test.dbf' ...

weixin_30396699的博客 144

线性代数的几何意义

本书使用向量的概念对国内高校工科“线性代数”的课程内容进行了较全面的几何分析。从向量的几何意义开始,分别讲述了向量组、向量空间、行列式、矩阵、线性方程组和二次型的几何意义或几何解释,其中不乏重要概念的物理意义的解释。这本书就像一串项梁,把上百个概念和定理的几何意义串在一 起敬献给读者朋友。, 本书文字多为作者原创,比如叉积的物理意义,克莱姆法则、雅可比矩阵、相似/合同矩阵、转置矩阵/对偶、矩阵乘积的行列式等系列概念的几何意义等,应用方面如使用矩阵分析的方法分析电子振荡器的工作原理等。, 本书图文并茂,思路清晰、语言流畅,概念及定理解释得合理、自然,同时具有通俗性、科普性,由于本书是直接根据线性代数课程的要求进行解释的,除了适合初学者和自学者使用之外,特别适合正在学习或复习线性代数的大学生作为深入思考的辅导书籍使用。, 一位数学人士这样评价本书:, 以中国线性代数课程教学大纲及主流教材为基本内容,较全面的收集、整理了包括引进教材、期刊、网络论坛中的关于线性代数的几何意义、几何解释或物理意义,大量原创了未见发表的概念或定理新的几何意义。基本形成了一个完整、系统的知识体系。具有较大的创新价值。

上一篇: 什么时候用抽象类,什么时候用接口
下一篇: 测试用例的评审
thunder09
博客等级 码龄17年 187粉丝 50原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值