`
hulu26
  • 浏览: 225984 次
  • 性别: 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 数据库中,以方便进行计算、统计等操作。下面将详细介绍该知识...

    linux下向oracle中导入dmp文件

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

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

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

    Oracle导入CSV格式数据

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

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

    在Oracle数据库管理中,导入`.dmp`文件是一项常见的任务,通常用于数据迁移、备份恢复等场景。为了确保导入操作能够顺利进行,并且不会对现有系统造成不必要的影响,需要在导入`.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导入导出dmp文件(详细步骤)

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

    oracle导入表导入数据实例

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

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

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

    如何把.dmp文件导入oracle中

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

    Oracle导入dmp文件.txt

    Oracle数据库导入dmp文件

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

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

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

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

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

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

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

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

    oracle中导入备份文件

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

Global site tag (gtag.js) - Google Analytics