当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2012-03-30 10:22:00  来源:本站整理

利用SQL Loader导入大量数据,避免利用SQL频繁写库的办法[MSSQL防范]

赞助商链接



  本文“利用SQL Loader导入大量数据,避免利用SQL频繁写库的办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  目前所做的项目需求从一个按行记录的数据文件取出部份字段,再将这些字段的按行存储到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

  SqlPlus远程衔接数据库

  1、sqlplus asicdb/asicdb@"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521)) )(CONNECT_DATA = (SID = orcl)))"

  2、sqlplus usr/pwd@//host:port/sid

  3、sqlplus usr/pwd@host:port/sid

  4、sqlplus userid/pwd@database.company.com:1521/sid

  作者 qsjiangs


  以上是“利用SQL Loader导入大量数据,避免利用SQL频繁写库的办法[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用SqlBulkCopy时应注意Sqlserver表中利用缺省值的列
  • 在SQL Server中利用SQL语句查询一个存储历程被别的全部的存储历程引用的存储历程名
  • 教你怎么利用sql游标实例分享
  • 利用Squid集群配合Dnspod成立双线镜像
  • 利用SQL Loader导入大量数据,避免利用SQL频繁写库的办法
  • ado若何利用sql函数?
  • WIN2000下利用SQL Server错误一例
  • 利用SQL Mail收发和自动处理邮件
  • 精确配置和利用SQL mail
  • 利用SQL Server 7.0成立一个安全的数据库的最好办法是什么?
  • 利用SQL-DMO备份数据库并举行校验
  • 利用sqlcmd在批处理脚本中履行SQL
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .