问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle sqlldr 导入 怎么让一个字段根据序列递增

发布网友 发布时间:2022-04-08 10:44

我来回答

2个回答

懂视网 时间:2022-04-08 15:06

SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据
仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使
您快速掌握SQL*LOADER的使用方法。
  首先,我们认识一下SQL*LOADER。
  在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。
  如执行:d:oracle>sqlldr
SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 11:06:42 2002
(c) Copyright 1999 Oracle Corporation.   All rights reserved.

用法: SQLLOAD 关键字 = 值 [,keyword=value,...]
有效的关键字:
     userid -- ORACLE username/password
    control -- Control file name
        log -- Log file name
        bad -- Bad file name
       data -- Data file name
    discard -- Discard file name
discardmax -- Number of discards to allow         (全部默认)
       skip -- Number of logical records to skip   (默认0)
       load -- Number of logical records to load   (全部默认)
     errors -- Number of errors to allow           (默认50)
       rows -- Number of rows in conventional path bind array or between direct p
ath data saves
(默认: 常规路径 64, 所有直接路径)
   bindsize -- Size of conventional path bind array in bytes(默认65536)
     silent -- Suppress messages during run (header,feedback,errors,discards,part
itions)
     direct -- use direct path                     (默认FALSE)
    parfile -- parameter file: name of file that contains parameter specification
s
   parallel -- do parallel load                    (默认FALSE)
       file -- File to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默
认FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unus
able(默认FALSE)
commit_discontinued -- commit loaded rows when load is discontinued(默认FALSE)
   readsize -- Size of Read buffer                 (默认1048576)
PLEASE NOTE: 命令行参数可以由位置或关键字指定
。前者的例子是 ‘sqlload
scott/tiger foo‘;后者的例子是 ‘sqlload control=foo
userid=scott/tiger‘.位置指定参数的时间必须早于
但不可迟于由关键字指定的参数。例如,
‘SQLLOAD SCott/tiger control=foo logfile=log‘, 但
‘不允许 sqlload scott/tiger control=foo log‘,即使允许
参数 ‘log‘ 的位置正确。
d:oracle>
     我们可以从中看到一些基本的帮助信息,这里,我用到的是中文的WIN2000 ADV SERVER。
  我们知道,SQL*LOADER只能导入纯文本,所以我们现在开始以实例来讲解其用法。
  一、已存在数据源result.csv,欲倒入ORACLE中FANCY用户下。
    result.csv内容:
  1,默认 Web 站点,192.168.2.254:80:,RUNNING
  2,other,192.168.2.254:80:test.com,STOPPED
  3,third,192.168.2.254:81:thirdabc.com,RUNNING
  从中,我们看出4列,分别以逗号分隔,为变长字符串。
  二、制定控制文件result.ctl
         result.ctl内容:
load data
infile ‘result.csv‘
into table resultxt 
(resultid char terminated by ‘,‘,
website char terminated by ‘,‘,
ipport char terminated by ‘,‘,
status char terminated by whitespace)
  说明:
  infile 指数据源文件 这里我们省略了默认的 discardfile result.dsc   badfile   result.bad
  into table resultxt 默认是INSERT,也可以into table resultxt APPEND为追加方式,或REPLACE
  terminated by ‘,‘ 指用逗号分隔
  terminated by whitespace 结尾以空白分隔
  三、此时我们执行加载:
D:>sqlldr userid=fancy/testpass control=result.ctl log=resulthis.out
SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:25:42 2002
(c) Copyright 1999 Oracle Corporation.   All rights reserved.
SQL*Loader-941:   在描述表RESULTXT时出现错误
ORA-04043: 对象 RESULTXT 不存在
  提示出错,因为数据库没有对应的表。
  四、在数据库建立表
    create table resultxt
   (resultid varchar2(500),
    website varchar2(500),
    ipport varchar2(500),
    status varchar2(500))
/
  五、重新执行加载
  D:>sqlldr userid=fancy/k1i7l6l8 control=result.ctl log=resulthis.out
SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:31:57 2002
(c) Copyright 1999 Oracle Corporation.   All rights reserved.
达到提交点,逻辑记录计数2
达到提交点,逻辑记录计数3
  已经成功!我们可以通过日志文件来分析其过程:resulthis.out内容如下:
SQL*Loader: Release 8.1.6.0.0 - Production on 星期二 1月 8 10:31:57 2002
(c) Copyright 1999 Oracle Corporation.   All rights reserved.
控制文件: result.ctl
数据文件: result.csv
错误文件: result.bad
废弃文件: 未作指定

(可废弃所有记录)
装载数: ALL
跳过数: 0
允许的错误: 50
绑定数组: 64 行,最大 65536 字节
继续:     未作指定
所用路径:        常规
表RESULTXT
已载入从每个逻辑记录
插入选项对此表INSERT生效
    列名                         位置       长度   中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
RESULTID                             FIRST      *     ,       CHARACTER            
WEBSITE                               NEXT      *     ,       CHARACTER            
IPPORT                                NEXT      *     ,       CHARACTER            
STATUS                                NEXT      *   WHT       CHARACTER            

表RESULTXT: 
3 行载入成功
由于数据错误, 0 行没有载入。
由于所有 WHEN 子句失败, 0 行没有载入。
由于所有字段都为空的, 0 行没有载入。

为结合数组分配的空间:     65016字节(63行)
除绑定数组外的内存空间分配:          0字节
跳过的逻辑记录总数:         0
读取的逻辑记录总数:         3
拒绝的逻辑记录总数:         0
废弃的逻辑记录总数:         0
从星期二 1月   08 10:31:57 2002开始运行
在星期二 1月   08 10:32:00 2002处运行结束
经过时间为: 00: 00: 02.70
CPU 时间为: 00: 00: 00.10(可
  六、并发操作
  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就算不错了,开始可用结构
     相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。

http://blog.itpub.net/22969361/viewspace-678489/

 

oracle----sqlldr用法(转)

标签:

热心网友 时间:2022-04-08 12:14

  oracle sqlldr 导入 怎么让一个字段根据序列递增表结构
  -- Create table
  create table T_1299_DQ_HDM
  (
  F_ID NUMBER(11) not null,
  F_CODE VARCHAR2(50) not null,
  F_USERNUMBER NUMBER(11),
  F_STATE VARCHAR2(1) default 0,
  F_UPDATETIME VARCHAR2(17),
  F_CHANNEL VARCHAR2(10),
  F_WINNO NUMBER(11),
  F_AREANUM VARCHAR2(20)
  )
  ;
  -- Create/Recreate primary, unique and foreign key constraintsalter table T_1299_DQ_HDM
  add primary key (F_ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
  initial 64K
  minextents 1
  maxextents unlimited
  );
  我只需要导入f_id 和f_code ,f_id根据序列递增sqlldr 控制文件 :
  Load DATA
  CHARACTERSET ZHS16GBK
  append INTO
  TABLE t_1299_dq_hdm
  fields terminated by "|" optionally enclosed by "."trailing nullcols
  (
  F_CODE ,
  F_ID "SEQ_1299_HDM.nextval"
  )
  我建了一个序列 SEQ_1299_HDM
  这样我试过了, f_id取不到值 记录插入不了。。
  导入的文本文件 txt 格式如下
  12323
  12312
  12321
  就是这样的 一行一条数据也就是要导入的f_code------解决思路----------------------
  参考
  在sqlldr中如何使用序列(sequence)
  ------解决思路----------------------
  sqlldr 导数据时,不用管他,在表上建一个 TR ,就比较方便了。具体的可以百度一下“ ORACLE 序列 自增”
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 怎么把文章里所有表格格式进行设置 换刹车油2桶没换干净,油壶上面有黑东西,需要售后吗 一般家用油壶有多高 金工油壶的内部 常见的外存储器有哪些 外存一般指哪些设备,它有什么特点? 在你看来真人撕名牌儿是什么体验? 高中同学聚会。想找些比较新的而且比较有趣或者搞笑的真人游戏。 一定要真人版的!!!! 撕名牌。要找东西 还有铃铛人 怎么玩(第一次玩)。详细地说一下游戏规则 现实中真人版的能玩的嗨的游戏有哪些 12星座谁是撕名牌终极王 梦见去世的父亲又活了,他说被一个高人从坟里救了出来,父亲是患肝癌去逝的,在梦里他的病都好了疼痛都 梦见死去的父亲病好了,带着微笑来看我 梦见已死的父亲对我说,他的病好了,要回家. 爸爸去世了但在梦里总是梦到爸爸病好了没有去世,是什么意思? 【京东物流】您的快递JDVC02817150044,已被京东小哥揽收成功,查询运单信息可? oppo r9 plustm a是多大屏 win7联想系统蓝牙怎么打开 有什么儿童牙膏推荐吗? 有适合小孩用的牙膏推荐吗? 绿源电动车质量好吗 路由器无法设置,登陆人数已满四人怎么办? 家里的wifi用的只能上4个人怎么办? 绿源电动自行车的产地在哪里? wifi一直显示已连满4个人怎么回事?我都没有设置过 wifi怎么限制几个人连接? wifi一直显示已连满4个人怎么回事 wifi连接数量被限制怎么办。 怎么到宜兴市官林三木路85号 江苏三木电缆有限公司怎么样? 溧阳至宜兴官林镇三木电厂水路航道怎么走 宜兴市三木建筑安装工程有限公司怎么样? 宜兴市三木运输有限公司怎么样? 官林三木集团对面有个什么铜业? 宜兴三木集团怎么样 宜兴市高塍助剂厂有限公司怎么样? 宜兴三木集团老总刘洪林开的什么车子 江苏益帆高分子材料有限公司怎么样? 官林三木集团离官林中煤电缆厂多少距离 有谁知道由宜兴金三角车站到三木集团有多远啊?