`
hulu26
  • 浏览: 225022 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle导入文件

阅读更多
在 Oracle 数据库中,通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中
2. 建立数据库间的 dblink,然后用 create table B as select * from
   A@dblink  where ...,或 insert into B select * from A@dblink
   where ...
3. exp A 表,再 imp 到 B 表,exp 时可加查询条件
4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交
5. Sql Loader(sqlldr) 导入数据,效果比起逐条 insert 来很明显。

方法一
操作步骤:
用pl/sql developer登陆Oracle,选择工具->Export Tables...->选择需要的表->Export到指定目录
打开cmd命令窗口输入下面语句
imp 用户名/密码@数据库实例名 file=dmp文件存在的目录 log=日志文件存在的目录fromuser=用户名 touser=用户名 commit=y
如:imp system/system@ring218 file=D:\dbscript\usdp\usdp_212.dmp log=D:\imp_usdp_sh.log fromuser=usdp604 touser=usdp604 commit=y

方法二:
Sql Loader导入
eg:
创建一个控制文件(.ctl):
OPTIONS (skip=1,rows=128,errors=100000) --sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA 
INFILE "users_data.csv" --要导入的文件,可以用多个infile也可以用 * 表示所有
BADFILE "路径" --指定BAD文件存放的路径
insert/append/replace/truncate --默认为insert
INTO TABLE users
when 字段2<>'8' --可以用 when 子句选择导入符合条件的记录
CHARACTER SET utf8 FIELDS TERMINATED BY ','--字符编码
Fields terminated by "," --数据中每行记录用 "," 分隔 
--注意:请加上下面一行句子
Optionally enclosed by '"' --数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时 
trailing nullcols
(
字段1 integer,--可以为字段指定类型
字段2 "user_seq.nextval",--直接取序列的下一值
字段3 FILLER,--跳过此字段
字段4 "'Hi '||upper(:字段4)",--用SQL函数或运算对数据进行加工处理
字段5 terminated by ",",NULLIF(字段5='NULL')--为列单独指定分隔符
字段6 DATE "YYYY-MM-DD HH24:MI:SS" NULLIF(字段6="NULL") --当字段为"NULL"时就是 NULL),
字段7 char(1000)--控制文件中的字段默认为char256,超过256需要指定长度,否则Log会报数据文件的字段超出最大长度

注:
1) insert   --为缺省方式,在数据装载开始时要求表为空[/color]
2) append   --在表中追加新记录[/color]
3) replace  --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录

详细参数说明,要着重关注以下几个参数:
userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
----------------------------------------------------------------------log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述

SQL *Loader 的性能与并发操作
1) ROWS 的默认值为 64,你可以根据实际指定更合适的 ROWS 参数来指定每次提交记录数。(体验过在 PL/SQL Developer 中一次执行几条条以上的 insert 语句的情形吗?)

2)常规导入可以通过使用 INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中,可以提高导入数据的性能。当然,在很多情况下,不能使用此参数(如果主键重复的话会使索引的状态变成UNUSABLE!)。

3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志(是否要 alter table table1 nologging 呢?)。这个选项只能和 direct 一起使用。

4) 对于超大数据文件的导入就要用并发操作了,即同时运行多个导入任务.

  sqlldr userid=/ control=result1.ctl direct=true parallel=true  
  sqlldr userid=/ control=result2.ctl direct=true parallel=true  
  sqlldr userid=/ control=result2.ctl direct=true parallel=true  

  当加载大量数据时(大约超过10GB),最好抑制日志的产生:  
 
  SQL>ALTER   TABLE   RESULTXT   nologging;
 
  这样不产生REDO LOG,可以提高效率。然后在 CONTROL 文件中 load data 上面加一行:unrecoverable,  此选项必须要与DIRECT共同应用。  
 
  在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到 1-10G 就算不错了,开始可用结构 相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。

分享到:
评论

相关推荐

    ORACLE导入文件方法

    在Oracle数据库管理中,将文本文件(如txt或csv)导入到数据库表是常见的操作,这对于数据迁移、数据加载或数据分析等工作来说至关重要。下面将详细解释如何将txt或csv文件导入Oracle数据库表。 首先,我们需要了解...

    用java编程将txt文件数据导入oracle

    "Java编程将TXT文件数据导入Oracle数据库" Java 编程将 TXT 文件数据导入 Oracle 数据库是指使用 Java 语言编写程序将 TXT 文件中的数据导入 Oracle 数据库中,以方便进行计算、统计等操作。下面将详细介绍该知识...

    ORACLE导入数据文件到指定的表空间

    "ORACLE导入数据文件到指定的表空间"这个主题涉及了Oracle数据库的导入工具(IMP)、数据泵(IMPDP)以及如何规划和管理表空间。 首先,我们需要了解Oracle的导入工具IMP。IMP是Oracle Data Pump Import的简称,它...

    oracle导入dmp文件之前要做的工作

    在Oracle数据库管理中,导入`.dmp`文件是一项常见的任务,通常用于数据迁移、备份恢复等场景。为了确保导入操作能够顺利进行,并且不会对现有系统造成不必要的影响,需要在导入`.dmp`文件之前做好一系列准备工作。...

    linux下向oracle中导入dmp文件

    "Linux 下向 Oracle 导入 dmp 文件" Linux 是一个开源的操作系统,而 Oracle 是一个关系型数据库管理系统。在实际工作中,我们经常需要将 dmp 文件导入到 Oracle 数据库中。下面我们将详细介绍如何在 Linux 下向 ...

    oracle导入导出dmp文件(详细步骤)

    以下将详细介绍如何使用Oracle 10g进行DMP文件的导入导出。 ### 导出(Export) 1. **使用命令行工具**: - 导出数据通常通过`expdp`命令完成。例如,要导出用户`mmis`在服务名`pcms`下的所有对象到`d:\pcms.dmp`...

    Linux下Oracle如何导入导出dmp文件详解

    远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出。 正文 a. 将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file=d:/daochu.dmp full=y b. 将用户 system 与 sys 用户的表...

    oracle 使用sqlplus导入大sql文件(实战)

    oracle 使用sqlplus导入大sql文件,需熟悉linux命令,批量导入sql文件以及导入乱码解决方案

    oracle导入表导入数据实例

    以下是对"oracle导入表导入数据实例"的详细解析: 1. **SQL*Loader简介** SQL*Loader是Oracle提供的一种快速、高效的数据加载工具,能够从文本文件或者二进制文件中批量导入大量数据到Oracle表中。它允许用户...

    DBF格式的数据导入oracle的流程

    在开始将 DBF 文件导入到 Oracle 数据库之前,我们需要确保 Oracle 数据库的相关服务已经启动,并且已经安装了 PL/SQL 软件。 步骤 1: 启动 Oracle 数据库服务 首先,我们需要确保 Oracle 数据库的相关服务已经...

    Oracle导入CSV格式数据

    总结,Oracle导入CSV格式数据涉及多个步骤,包括准备CSV文件、创建控制文件、执行SQL*Loader导入以及处理可能出现的问题。理解并掌握这些步骤,能有效帮助你在实际工作中高效地导入大量CSV数据到Oracle数据库。

    如何把.dmp文件导入oracle中

    ### 如何将 .dmp 文件导入 Oracle 数据库 在日常工作中,我们经常需要将数据从一个Oracle数据库迁移到另一个Oracle数据库。通常情况下,这可以通过使用Oracle的导出(exp)和导入(imp)工具来实现。本文将详细介绍...

    Oracle导入dmp文件.txt

    Oracle数据库导入dmp文件

    oracle导入时表空间不一致解决方法

    ### Oracle导入时表空间不一致解决方法 在Oracle数据库管理中,经常会出现因表空间不一致而导致的数据导入失败的问题。本文将详细介绍如何解决这一常见问题,并确保数据能够顺利地从一个环境迁移到另一个环境中。 ...

    oracle数据库导入导出DMP文件操作

    ### Oracle数据库导入导出DMP文件操作详解 #### 一、Oracle数据库DMP文件导出操作 DMP文件是Oracle数据库特有的数据交换格式,主要用于数据的备份与迁移。通过使用Oracle的导出工具(EXPDP或传统的EXP),可以将...

    Oracle数据库导入导出(备份与恢复).docx

    Oracle数据库导入导出命令(备份与恢复) ...* 需要确保导入文件的格式正确。 Oracle数据库的导入导出命令提供了强大且灵活的数据备份和恢复功能。通过正确地使用exp和imp命令,可以轻松地备份和恢复数据库。

    oracle中导入备份文件

    本文将详细介绍如何在Oracle中使用`exp`和`imp`命令来导入和导出备份文件。 1. 数据导出(Export): - 完全导出:`exp system/manager@TEST file=d:\daochu.dmp full=y` 这个命令将整个TEST数据库的数据和元数据...

    往oracle数据库导入数据(tsv)

    本主题将探讨如何将TSV(Tab Separated Values,制表符分隔值)文件导入到Oracle数据库中,这是一个常见的数据迁移或数据加载任务。TSV文件是一种简单格式的数据文件,通常用于数据交换,其内容由列名和行数据组成,...

Global site tag (gtag.js) - Google Analytics