`

用Oracle sqlldr导入文本文件TXT 总结

 
阅读更多
最近在处理一批文本数据,规定按照接口说明导入到ORACLE数据库中,经过最近的研究,解决了一些问题,觉得我必要总结一下:

 

常规资料:

 

----------------------------------------------------

Dos 环境下使用SQl*Loader命令 加载

使用其它数据库的数据转移工具

Oracle 企业管理器中的数据加载功能

具体的技术实现

一、Dos 环境下加载

1、首先,服务器端的侦听服务必须已经开启。

测试方法:Dos 下输入

C:/>sqlplus username/password@serviceName

2、然后使用 Oracle 的 sqlldr 命令进行数据的导入

前期条件

1) Oracle 数据库端必须已经建好了需要导入的数据表的结构

2) 一个数据源文件 下面例子中为制表符分隔的文本文件 model.txt ,为Excel 表中导出的

3) 手工编辑一个XXX.CTL 的控制文件

4) 命令行加载数据


如下实例:

以下文件缺省放到C:/ 下,如果不是,就需要指明全路径

1. 命令控制文件 input.ctl 内容

命令
说明

load data
1、控制文件标识

infile 'model.txt'
2、要输入的数据文件名为test.txt

append into table system.塔位属性表
3、向表test中追加记录

fields terminated by X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB)

(编号,名称,大小)
5、定义列对应表中顺序

 

控制文件中指定插入数据的方式关键字

insert,为缺省方式,在数据装载开始时要求表为空

append,在表中追加新记录

replace,删除旧记录,替换成新装载的记录

truncate,同上

在 Dos 窗口下使用 SQl*Loader 命令实现数据的导入

C:/>sqlldr userid=system/manager@ serviceName control=input.ctl

默认日志文件名为:input.log

默认坏记录文件为:input.bad

二、使用其它数据库转移工具


以下以SQL Server 导入导出向导为例

1、在数据的导入导出向导中设置数据源服务器,实例中选择数据源选择SQL Server

2、然后指定要导入的Oracle 数据源

3、需要配置Oracle 的属性信息

需要注意的是,登录数据库的用户信息即为数据导入之后的方案名,即导入之后的SQL Server 中的表在Oracle 中标志名为 username.表名

以下按照提示即可,可以完全导入SQl Server 中的数据表和视图,也可以使用查询语句返回你要选择的列或者行。

三、Oracle 企业管理器中的数据加载功能

登录Oracle 的控制台界面,针对单独的数据表可以使用数据加载工具

中间需要指定控制文件等,同Dos 加载一致,不再重复

 

----------------------------------------------------

向Oracle中导入文本数据时使用的控制文件格式
 
无论是使用上一篇中的哪种方式都需要有一个控制文件,下面是控制文件(ctl文件)书写的基本格式:
   
 命令
 说明
 
load data
 1、控制文件标识
 
infile 'testl.txt' 
 2、要输入的数据文件名为test.txt,此时是要导入的数据文件同控制文件在同一路径下,如果不在同一路径下则需要写完整路径名
 
append into table 表名(可以是全名也可以是同义词)
 3、向表test中追加记录
 
fields terminated by X'09'
 4、指定分隔符,字段终止于X'09',是一个制表符(TAB),如果用逗号分割就将X'09'替换为','
 
(编号,名称,大小)
 5、定义列对应表中顺序
 


  控制文件中指定插入数据的方式关键字


                           insert,为缺省方式,在数据装载开始时要求表为空

                           append,在表中追加新记录

                           replace,删除旧记录,替换成新装载的记录

                           truncate,同上

控制文件的示例:
load data
infile 'test.txt'
append into table test.test
fields terminated by X'09'
(test,test1,test2)

对有时间类型的数据导入的示例控制文件:
load data
infile 'h:/TB_FACT_PHS_TICKET_DAY.txt'
Append into TABLE TB_FACT_PHS_TICKET_DAY
fields terminated by X'09'
(Time_Id           
,Region_Id        
,Cust_Type_Id     
,Prod_Type_Id     
,Acct_Item_Type_Id
,Acct_Item_Type_Cd
,Exchange97_Cd    
,Latn_Cd          
,Call_Duration    
,Access_In_Duration
,Income
,In_Date  Date "YYYY-MM-DD"
)

文件导入命令                    C:/>sqlldr userid=test/test@test control=test.ctl(此时控制文件test.ctl存在C:/路径下)
在命令控制符下进入Oracle        C:/>sqlplus username/password@serviceName

 

 


oracle导入txt数据文件2008年07月30日 星期三 17:21把txt文件格式的数据文件导入oracle的方法是利用sqlloader工具。

第一步:把文本格式的数据文件放入C盘。如,test.txt
第二步:建立控制文件append.ctl。(名字可以随便取,放C盘下)

append.ctl的内容如下:
  load data             --1、控制文件标识
    infile   'test.txt'       --2、要输入的数据文件名为test.txt
    append into table CTXSYS.test   --3、向CTXSYS表空间中的表test中追加记录
    fields terminated by X'09' --4、字段终止于X'09',是一个制表符
(id,username,password,sj)     -----定义列对应顺序

   其中append为数据装载方式,还有其他选项:
   a、insert,为缺省方式,在数据装载开始时要求表为空
   b、append,在表中追加新记录
   c、replace,删除旧记录,替换成新装载的记录
   d、truncate,同上

第三步:在命令提示符下输入命令。
C:/>sqlldr userid=username/password

control=c:/append.ctl        数据库中用名的用户名和密码
或者 C:/>sqlldr userid=system/manager@ serviceName control=input.ctl 

 

----------------------------------------------------

 

一些经常出现的问题:

 

1。关于日期格式的问题:

 

ctl基本写法诸如:

 

load data
infile 'C:/TP_LOANCONTRACTSUM.txt'
insert into table TP_LOANCONTRACTSUM
fields terminated by '|!'
(
column01,
column02,
column03,
column04 "to_date(:column04,'''yyyy-mm-dd hh24:mi:ss''')",
column05 "to_date(:column05,'''yyyy-mm-dd hh24:mi:ss''')",
column06,
column07,
column08,
column09,
column10,
column11,
column12 "to_date(:column12,'''yyyy-mm-dd hh24:mi:ss''')",
column13
)
 

 

2。关于长字符串问题,CTL默认情况下是256位(或者256位左右),所以长字符串时会在log里报错,提示所输入的值超过最大长度,解决办法,在ctl文件里再指定大小,注意个情况,不能写VARCHAR只能写CHAR,否则报错,诸如:

 

load data
infile 'C:/TP_PLEDGECONTRACTINFO.txt'
insert into table TP_PLEDGECONTRACTINFO
fields terminated by '|!'
(
column01,
column02,
column03,
column04,
column05,
column06,
column07 "to_date(:column07,'''yyyy-mm-dd hh24:mi:ss''')",
column08,
column09,
column10 "to_date(:column10,'''yyyy-mm-dd hh24:mi:ss''')",
column11,
column12,
column13,
column14,
column15 "to_date(:column15,'''yyyy-mm-dd hh24:mi:ss''')",
column16,
column17,
column18 "to_date(:column18,'''yyyy-mm-dd hh24:mi:ss''')",
column19,
column20,
column21,
column22,
column23,
column24,
column25 "to_date(:column25,'''yyyy-mm-dd hh24:mi:ss''')",
column26 CHAR(500),
column27,
column28
)

 

----------------------------------------------------

分享到:
评论

相关推荐

    oracle sqlldr多文件批量导入

    Oracle SQL*Loader是Oracle数据库提供的一种强大的数据加载工具,它能够高效地将大量数据从文本文件导入到数据库中。在“oracle sqlldr多文件批量导入”这个场景下,我们需要掌握如何利用SQL*Loader一次性处理多个...

    sqlldr导入带有自动增加的数据

    以下是对“sqlldr导入带有自动增加的数据”这一主题的详细解析,基于给定的文件信息。 ### SQL*Loader简介 SQL*Loader是Oracle提供的一个实用程序,用于快速、高效地将大量数据加载到Oracle数据库中。它支持多种...

    windowns下利用bat命令+oracle的sqlldr功能导入数据

    1. **SQL*Loader简介**:SQL*Loader是Oracle数据库提供的一个实用程序,可以从文本文件或二进制文件中快速加载大量数据。它支持多种数据格式,并可以进行复杂的转换和验证,如日期转换、数字格式检查等。 2. **数据...

    sqlldr导入csv文档

    ### SQL*Loader (SQLLDR)导入CSV文档详解 #### SQL*Loader简介 SQL*Loader是Oracle数据库的一个强大工具,用于高效地将大量数据从外部文件加载到Oracle数据库中的表中。它支持多种数据格式,包括CSV、文本、二进制...

    oracle sqlldr 导入乱码问题

    在Oracle数据库环境中,SQL*Loader(SQL Loader)是一款强大的数据导入工具,用于将大量数据从文本文件快速批量地加载到数据库表中。然而,在实际操作过程中,用户可能会遇到各种问题,其中“导入乱码问题”尤为常见...

    Oracle sqlldr导入一个日期列实例详解

    Oracle SQL*Loader(sqlldr)是Oracle数据库提供的一种强大的数据加载工具,用于将大量数据从文本文件快速导入到数据库表中。在这个实例中,我们将详细探讨如何使用SQL*Loader导入包含日期列的数据。 首先,我们...

    Oracle批量导入文本文件快速的方法(sqlldr实现)

    Oracle数据库是广泛使用的大型数据库系统,它提供了多种数据导入方式,其中使用sqlldr工具进行批量数据导入是一种高效的方式。在处理大批量数据导入时,简单的插入语句可能会因为性能问题而导致导入速度过慢,这时...

    如何通过txt文件批量导入数据到oracle数据库

    在面对存储着大量记录的文本文件(如TXT)时,手动一条条输入数据显然是低效且易出错的。因此,我们需要掌握如何通过TXT文件批量导入数据到Oracle数据库的方法。下面,我们将详细介绍这一过程。 首先,我们需要了解...

    Oracle中导入文本数据的方法

    本文将详细介绍几种常用的导入文本数据到Oracle的方法,包括在DOS环境下使用SQL*Loader命令、利用其他数据库的数据转移工具以及通过Oracle企业管理器的数据加载功能。这些方法各有优势,适用于不同的场景和需求。 #...

    oracle_Sqlldr的使用

    控制文件是SQL*Loader执行数据加载操作的中枢,它是一个用特定语言编写的文本文件,能够被SQL*Loader识别。控制文件由三部分组成: - 全局选项,包括行数、跳过的记录数等。 - INFILE子句指定的输入数据。 - 数据...

    利用 sqluldr2导出数据 使用sqlldr导入数据 通过merge into 合并更新数据

    SQLULDR2是Oracle提供的一款数据导出工具,它能够快速地将数据库中的数据导出到文本文件或其他格式的文件中。使用步骤如下: - 首先,创建一个控制文件,该文件定义了要导出的表、字段和格式。 - 接着,运行...

    oracle导入txt数据的脚本

    在Oracle数据库管理中,将TXT文本文件的数据导入到数据库中是一项常见的操作,这通常通过SQL*Loader工具实现。SQL*Loader是Oracle提供的一种快速、高效的数据加载工具,它可以处理大量数据的批量导入。以下是关于...

    利用sqlldr大量数据导入

    `SQL*Loader`(简称sqlldr)是Oracle数据库提供的一种批量数据加载工具,它能够快速、方便地将大量结构化数据从文本文件导入到Oracle数据库中。下面将详细介绍sqlldr的工作原理、配置过程以及如何利用它进行大量数据...

    sqlldr自动生成控制文件导入到表

    SQL*Loader(简称sqlldr)是Oracle数据库提供的一款强大的数据加载工具,用于将文本文件中的数据高效地导入到数据库表中。在这个过程中,通过自动生成控制文件,可以实现自动化导入,甚至达到备份的目的。以下是对这...

    Oracle Client sqlldr和ulus.msb文件

    它能够快速地将大量数据从文本文件导入到数据库表中,适用于大批量的数据迁移、初始化或更新任务。`sqlldr`具有以下特点和功能: 1. **高速导入**:通过直接路径加载方式,`sqlldr`绕过了数据库服务器的常规处理,...

    浅谈ORACLE的SQLLDR

    - **支持多种数据源**:适用于多种类型的文件,如文本、CSV等格式的数据文件,提供灵活的数据导入方案。 - **灵活的数据转换**:在导入过程中支持复杂的转换逻辑,如日期格式转换、空值处理等。 ##### 应用场景 - *...

    spool导出与sqlldr导入

    SQL*Loader是Oracle提供的一个快速数据加载工具,可以从文本文件批量导入数据到数据库中。它通过控制文件(如"InputLost.ctl")定义数据格式和加载规则。控制文件的基本结构包括以下部分: - **LOAD DATA**:声明...

    oracle导入表导入数据实例

    SQL*Loader是Oracle提供的一种快速、高效的数据加载工具,能够从文本文件或者二进制文件中批量导入大量数据到Oracle表中。它允许用户自定义数据格式,并且支持多种数据源,使得数据迁移和备份变得简单。 2. **导入...

    oracle文本导入导出工具-ozoradts

    Import采用直接路径方式,等同于sqlldr的Direct方式导入(DIRECT=TRUE),nolog参数等同于sqldr的UNRECOVERABLE参数 ozoradts -exp userid=test/test@oradb columnover=";" query="select * from fct_serv_product_...

Global site tag (gtag.js) - Google Analytics