`
dsttt09
  • 浏览: 28599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle数据导入

阅读更多

方案一:使用Oracle自带的SQL*LOADER工具。SQL*LOADEROracle的数据加载工具,通常用来将操作系统上的文件导入到Oracle数据库表中。SQL*LOADER使用.ctl控制文件来描述数据文件各记录、各字段与数据库表结构之间的对应关系,以控制数据的正确导入。UNIX下使用SQL*LOADER示例:

 

假设有数据文件data.cvs【数据文件可以是任何约定的格式,只要在ctl中写明了解析这种格式的方式】

20110001,1101,Oracle

20110002,1101,Mysql

20110003,1102,DB2

20110004,1103,SQL Server

 

数据库表

DBStudent(no char(8),class char(4),name varchar(30))

 

控制文件load.ctl

load        data

infile       'data.csv'

insert      into  table       DBStudent

fields      terminated      by    ',' TRAILING NULLCOLS

(noclassname)

 

在命令行输入

sqlldr username/password@tns_name control='load.ctl' log=log.txt bad=bad.txt

 

data.csv的数据成功导入到表DBStudent中。关于sqlldr参数:

username        数据库用户名

password        数据库密码

tns_name        数据库TNS名称(若数据库在本机上,可以不写)

control           ctl控制文件

log                 LOG文件,记录导入过程的所有信息,包括导入记录数、Error等。

bad                存放导入失败的数据。如果所有数据导入成功,则该文件不存在。

更多sqlldr和ctl文件的参数待续。。。。。。

 

使用SQL*LOADER导入数据失败或数据乱码的常见原因:

1. 数据文件错误。如存在多条数据格式不一致、中文字符编码、字段为空、文件路径错误等。

2. CTL文件错误。如没有指定一条记录的长度,导致数据混乱;没有指明空字段如何处理(TRAILING NULLCOLS)等。

3. 其他错误。如没有数据库表的读写权限。

 

 

方案二:使用Oracle自带的imp工具。exp/impOracle自带的一对数据导出/导入工具,常用于数据恢复与备份,使用exp/imp工具可以实现单表导入、用户导入、数据库导入三个级别的导入操作。exp/imp分交互式、非交互式两种处理方式。交互式就是一步一步Next,非交互式就是一条命令搞定。使用交互式imp示例:

$ imp

Import: Release 8.1.6.0.0 - Production on 星期五 12 7 17:01:08 2001

(c) Copyright 1999 Oracle Corporation.   All rights reserved.

用户名:  test

口令:****

连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

导入文件: expdat.dmp> /tmp/m.dmp

输入插入缓冲区大小(最小为 8192 ) 30720>

经由常规路径导出由EXPORT:V08.01.06创建的文件

警告: 此对象由 TEST 导出,而不是当前用户

已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入

只列出导入文件的内容(yes/no)no>

由于对象已存在,忽略创建错误(yes/no)no> yes

导入权限(yes/no)yes>

导入表数据(yes/no)yes>

导入整个导出文件(yes/no)no> yes

. 正在将TEST的对象导入到 SCOTT

. . 正在导入表                        "CMAMENU"        4336行被导入

成功终止导入,但出现警告。

 

使用非交互式imp示例:

$ imp system/manager fromuser=jones tables=(accts)

$ imp system/manager fromuser=scott tables=(emp,dept)

$ imp system/manager fromuser=scott touser=joe tables=emp

$ imp scott/tiger file = expdat.dmp full=y

$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n commit=y grants=y full=y

log=/oracle_backup/log/imp_scott.log

$ imp system/manager parfile=params.dat

params.dat 内容

file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)

 

使用导入工具imp可能出现的问题

(1) 数据库对象已经存在

一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等; 数据库对象已经存在,按缺省的imp参数,则会导入失败;如果用了参数ignore=y,会把exp文件内的数据内容导入。如果表有唯一关键字的约束条件,不合条件将不被导入;如果表没有唯一关键字的约束条件,将引起记录重复。

 

(2) 数据库对象有主外键约束

不符合主外键约束时,数据会导入失败。

解决办法:

①先导入主表,再导入依存表。

disable目标导入对象的主外键约束,导入数据后,再enable它们。

 

(3)权限不够

如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限。

 

(4)导入大表( 大于80M ) 时,存储分配失败。

默认的EXP时,compress = Y,也就是把所有的数据压缩在一个数据块上。导入时,如果不存在连续一个大数据块,则会导入失败。导出80M以上的大表时,记得compress= N,则不会引起这种错误。

 

(5) impexp使用的字符集不同

如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息,导入完成后再改回来。

 

(6) impexp版本不能往上兼容

imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件。根据情况我们可以用

$ imp username/password@connect_string

说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora

定义的本地或者远端数据库的名称

注意事项:

UNIX/etc/hosts            要定义本地或者远端数据库服务器的主机名

Windowswindows\hosts              IP地址的对应关系

 

方案三:使用可视化工具TOADPL/SQL SQL DeveloperSQL Navigator等等

 

分享到:
评论
1 楼 peter1407 2012-04-26  
用上了,谢谢

相关推荐

    oracle数据导入导出

    ### Oracle 数据导入导出 imp/exp 命令详解 #### 一、概述 在数据库管理领域,Oracle 提供了强大的工具来支持数据的备份与恢复,其中 `imp`(Import)与 `exp`(Export)命令是进行数据迁移时常用的工具之一。本文...

    Oracle数据导入工具 V2.0

    Oracle数据导入工具V2.0是一款专为数据库管理员和IT专业人士设计的强大软件,主要用于处理Oracle数据库的数据导入工作。这款工具以其高效、易用的特点,极大地简化了数据迁移、备份和恢复等过程,使得数据库管理变得...

    Oracle 数据导入工具

    Oracle 数据导入工具是数据库管理员和开发人员用于高效地将大量数据加载到Oracle数据库中的利器。在Oracle环境中,SQL*Loader是这样一个强大的工具,它允许用户快速地从外部数据文件批量导入数据,而无需编写复杂的...

    oracle 数据导入导出

    Oracle 数据导入导出是数据库管理中的重要操作,用于在不同环境之间转移数据,备份和恢复数据,以及进行数据迁移。本文将深入探讨Oracle数据库的数据导入导出机制,包括使用的主要工具、过程和最佳实践。 Oracle ...

    Oracle数据导入导出

    Oracle数据导入导出是数据库管理中的重要操作,用于在不同环境之间转移数据,备份或恢复数据,以及在系统升级或迁移时保持数据完整性。Oracle提供了一对工具,即IMP(Import)和EXP(Export),来执行这些任务。下面...

    oracle数据导入和备份的批处理

    本文将详细讲解Oracle数据导入和备份的批处理方法。 一、Oracle数据备份 1. RMAN(Recovery Manager)备份:Oracle推荐使用RMAN进行数据库备份,它提供了全面的备份和恢复功能,包括全库备份、增量备份、表空间备份...

    Oracle数据导入方法

    Oracle数据导入是数据库管理中的一项重要任务,它涉及到将外部数据高效地引入到Oracle数据库中。在本篇文章中,我们将详细探讨SQL*Loader这一强大的工具,以及如何在DOS环境下使用它,同时也会提及其他数据转移工具...

    ORACLE 数据 导入 Benthic

    在数据导入方面,Oracle提供多种方法来满足不同场景的需求,包括SQL*Loader、External Tables、Data Pump以及PL/SQL程序等。而"ORACLE 数据 导入 Benthic"可能是指一种特定的工具或方法,它专门针对大数据量导入的...

    oracle数据导入到Mysq库

    首先,我们来探讨Oracle数据导入到MySQL的原理。数据迁移通常涉及数据抽取、转换和加载(ETL)过程。在本例中,"oracle2mysql"工具可能通过以下步骤工作: 1. **数据抽取**:工具连接到Oracle数据库,通过SQL查询...

    oracle数据导入、导出工具

    如果这个文件是与Oracle数据导入导出相关的,那么它可能包含了关于如何使用expdp和impdp的步骤、示例脚本,或者是准备导入的测试数据。 在实际操作中,确保数据导入导出的安全性和正确性非常重要,比如要备份重要...

    Oracle数据导入全程

    ### Oracle数据导入全程知识点解析 #### 一、Oracle服务器安装 **知识点1:Oracle安装流程** - **安装入口**:通过运行安装介质中的`setup.exe`文件启动Oracle安装过程。 - **安装模式选择**:选择“高级安装”...

    Linux下Oracle数据导入导出方法

    本文将详细解析Linux下Oracle数据导入导出的方法,包括使用exp和imp工具的具体操作流程。 ### Linux下Oracle数据导入导出方法 #### 1. Oracle数据导出(Exp) 在Linux系统中,Oracle数据导出主要通过`exp`命令来...

    Oracle数据导入导出命令.pdf

    ### Oracle 数据导入导出命令详解 #### 一、概述 Oracle 数据库系统是业界领先的数据库管理系统之一,提供了强大的数据管理功能。在Oracle中,数据的导入导出是一项非常重要的任务,尤其是在需要迁移数据、备份数据...

    Oracle 数据导入导出

    Oracle 数据导入导出命令解析 Oracle 数据库的导入导出操作是数据库管理员的日常工作之一,对于数据的导入导出命令的熟悉和掌握是非常重要的。本文将对 Oracle 数据库的导入导出命令进行详细的解析,并对其相应的...

    ORACLE数据导入导出

    oracle数据导入导出 /*根据SCHEMAS导出数据,VERSION去掉时导出当前oracle的版本,在dos执行,文件导出完成后会显示导出文件的存放目录*/ expdp ewin/123321@172.20.0.31/mespr

    Oracle数据导入工具 v2.0

    Oracle数据导入工具v2.0是一款专为简化Oracle数据库大批量数据导入而设计的应用软件。在传统的数据库管理中,批量导入大量数据通常涉及到命令行工具如SQL*Loader(SQLLDR),这需要一定的技术背景和熟悉相关语法。...

    oracle数据导入sql server

    ### Oracle数据导入SQL Server:类型不变的高效迁移方法 在跨数据库平台迁移的过程中,保持数据类型的一致性是一项挑战性的任务。本文将详细介绍如何将Oracle数据库中的数据导入至SQL Server,同时确保数据类型不变...

    oracle数据导入导出FTP

    在Oracle数据导入导出中,我们可以通过FTP将包含数据的文件从源位置传输到目标服务器,然后在目标服务器上使用SQL*Loader进行数据加载。这个过程可能涉及到以下步骤: 1. 在源服务器上,使用FTP客户端工具将数据...

Global site tag (gtag.js) - Google Analytics