`
blueyanghualong
  • 浏览: 227274 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用SQL Loader导入大量数据,避免使用SQL频繁写库

 
阅读更多

 

 50人阅读 评论(0) 收藏 举报

目前所做的项目需要从一个按行记录的数据文件取出部分字段,再将这些字段的按行存储到Oracle数据库。这些数据大约有2 700 000条,原始数据文件有450M左右。至少有两种方法可以实现:

     一.将原始数据文件读进内存流中,每读一行解析一条数据,接着执行一条SQL语句,将解析到的数据插入数据库表;

     二..将原始数据文件读进内存流中,每读一行解析一条数据,接着将解析到的数据按行写入一个临时文件data.tmp,待所有数据均被解析完毕且写入临时文件后,调用SQL Loader,将所有数据一次性从临时文件导入数据库表。

     一开始是按照第一种方法编程的。在本机(Oracle服务器装在本机)测试顺利通过,但是花了大约150分钟才导入解析和完成;当部署到实际环境中运行 时,却出现了问题。跟踪发现是因为网络不稳定(程序所在服务器与数据库服务器处于不同的局域网,由防火墙隔开,做了几个特定端口的路由),有时候连接不到 数据库,往往只导入了很少的几千条甚至几百条数据时,数据库就连接不上了。

     后来分析,对于大量数据的导入,采用第一种方法会导致频繁写库,每次都要打开数据库(禁用了连接池,后续文章会提到禁用的原因),对数据库造成较大的压力,加上网络环境本来就不够稳定,所以很容易出现问题。于是改用第二种方法。

     使用第二种方法后,解析花的时间大约为90分钟,导入则只花了5分钟左右。看来SQL Loader的效率真的很高。

     下面讲讲SQL Loader的基本用法。
     
     1、在Oracle中按照导入数据的格式建立一个空表

     2、编写一个控制文件control.ctl,内容如下

 LOAD  DATA 
 INFILE 
 ' E:/test/data.tmp '  
 BADFILE 
 ' E:/test/data.bad ' 
 DISCARDFILE 
 ' E:/test/data.dsc ' 
 DISCARDMAX 
 1000 
 
 APPEND
 
INTO   TABLE  "TB_TEST"
 FIELDS TERMINATED 
 BY   ' | ' 
 TRAILING NULLCOLS
   (
    
 USER_ID 
    
 USER_NAME 
    REG_TIME  DATE(20) "YYYY - MM - DD HH24:MI:SS"
    )

 操作分类:

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

3、在命令行中执行以下语句:

        sqlldr userid/password@database e:/test/control.ctl

 

分享到:
评论

相关推荐

    SQL Server导入Oracle数据库

    - 对于Oracle,可以使用`SQL*Loader`(一种快速数据加载工具)或SQL Developer的“数据导入”功能。将转换后的数据文件加载到Oracle表之前,你需要创建匹配的目标表结构。 4. **连接与接口**: - 如果需要频繁...

    ORACLE导入数据自动运行脚本

    2. **导入**:数据导入是将外部数据源中的数据加载到Oracle数据库的过程,常见的方法有SQL Loader、External Tables、Data Pump等。 3. **数据自动运行**:意味着整个数据导入流程是自动化的,无需人工干预。 4. **...

    SQLLoader allows SQL statements to resid-开源

    对于需要频繁进行大规模数据导入的项目,尤其是那些基于 Oracle 数据库的项目,SQLLoader 是一个非常实用的选择。同时,其开源属性促进了工具的持续发展和社区的活跃,确保了用户可以享受到不断优化和增强的功能。

    XML导入Oracle表

    SQL*Loader适用于大量数据的快速导入,而XMLType提供了对XML数据的直接操作和支持,更适合需要频繁查询和处理XML结构的场景。选择哪种方式取决于你的具体需求和数据量。在实际应用中,可能需要结合使用这两种方法,...

    oracle导出excel和excel导入oracle的经验总结.docx

    对于大量数据或频繁的数据交换,使用SQL*Plus和SQL Loader更为高效;而对于小规模数据或临时性需求,PL/SQL Developer和Excel的直接交互则更为方便。在进行数据导入导出时,确保数据的一致性和完整性至关重要,避免...

    省市区表和sql数据 mysql

    2. **数据填充**:将 addr-code 和 s_global_region 数据导入数据库,可能需要写SQL脚本或使用数据导入工具。 3. **级联查询**:在前端(如网页或APP)使用JavaScript或服务器端语言(如PHP、Java)实现级联查询,...

    excel导入数据到oracle工具

    在没有专门工具的情况下,这个过程可能需要编写SQL脚本或者使用Oracle的数据加载工具如SQL*Loader或DBMS_LOB。"Excel导入数据到Oracle工具"则提供了一个图形化的用户界面,使得非技术背景的用户也能轻松操作。 该...

    oracle 文本导入工具

    这个工具是由开发者自己编写的,旨在简化数据导入过程,提高效率,并可能解决传统方法(如SQL*Loader或SQL命令)在处理大量数据时可能出现的复杂性和限制。 在Oracle数据库管理中,数据导入通常是一项关键任务,...

    高效导入Execl

    6. **执行SQL\*Loader导入命令**:使用SQL\*Loader工具,通过命令行方式执行数据导入操作。命令格式大致为`sqlldr <username>/<password> @<control file path>`。 7. **性能优化**:文档中提到该方法的性能虽然...

    oracle导入导出工具

    Oracle SQL*Loader是Oracle数据库提供的一种强大的数据导入工具,它能够高效地将大量数据从文本文件批量导入到数据库中。SQL*Loader通过控制文件来指定数据文件格式、字段映射和加载规则,使得数据导入过程更为灵活...

    excel数据导入oracle

    3. **执行SQL*Loader导入操作**: - 在命令提示符中输入: ```plaintext sqlldr userid=system/test@netservicename control=d:\input.ctl ``` - 此命令将启动SQL*Loader,并根据`input.ctl`文件中的指令执行...

    使用toad将excel数据导入oracle.doc

    ### 使用Toad将Excel数据导入Oracle的详细指南 #### 一、引言 在软件开发或数据处理过程中,经常需要将Excel文件中的数据批量导入到Oracle数据库中。传统的做法是利用Oracle自带的工具SQL\*Loader,但这种方法往往...

    ORACLE快速导数据工具

    5. **性能优化**:通过使用直接路径加载,SQL*Loader绕过Oracle的常规查询执行路径,直接写入数据块,避免了事务处理和回滚段的开销,从而提高了速度。 在实际使用中,用户需要创建一个控制文件,定义数据文件的...

    经典oracle 数据导入导出工具(可自动执行)免安装

    2. **SQL*Loader**:SQL*Loader是从外部文件加载数据到Oracle数据库的工具,适用于大量数据的快速导入。它允许用户通过控制文件定义数据格式,并能处理各种复杂的数据转换。 3. **免安装工具**:描述中的“免安装”...

    ORACLE 快速导出工具sqluldr2

    与传统的INSERT语句相比,SQL*Loader能够处理大量数据,且性能优秀,因为它避免了频繁的数据库交互。此外,它支持多种数据格式,包括固定长度和可变长度记录,以及自定义数据解析规则。 在不同的操作系统环境下,如...

    将EXCEL数据 插入ORACLE数据库

    - **性能优化**:如果数据量大,考虑分批导入,利用Oracle的批量插入语句提高效率,避免频繁的网络交互。 - **权限管理**:确保使用的账户有足够的权限执行插入操作,并遵循最小权限原则,防止安全风险。 通过上述...

    Excel文件导入到Oracle数据库

    3. **利用工具或编程**:有多种方式可将Excel数据导入Oracle,包括使用Oracle SQL Developer、PL/SQL Developer等图形界面工具,或者通过编写SQL*Loader、外部表等脚本进行批量导入。这些工具通常允许设置列映射,...

    sqlldr例子

    SQL*Loader(简称sqlldr)是Oracle数据库系统中一个强大的数据加载工具,它可以从外部文件高效地批量导入数据到数据库中。这篇博文将详细介绍sqlldr的使用实例,帮助你理解和掌握这一工具,以便在实际工作中更有效地...

    Oracle常用SQL脚本

    9. **数据导入导出**:使用SQL*Loader或EXP/IMP工具,可以批量导入或导出数据,方便数据迁移和备份。 10. **并发控制**:Oracle的锁定机制(如ROW LOCK、SHARE LOCK、EXCLUSIVE LOCK)和事务管理(COMMIT、ROLLBACK...

    Oracle数据的快速加载.pdf

    SQL INSERT语句适用于小量数据插入,但其速度慢且占用CPU资源过多,不适于大量数据导入。SQL*Loader提供了传统路径和直接路径两种装载方式,直接路径加载速度快,尤其在并行执行时,但它的局限性在于只能从外部文件...

Global site tag (gtag.js) - Google Analytics