以前给山东某单位做oracle数据库恢复得时候,恢复出来得数据中包含date类型,当时给客户提供得是sqlldr得方式,因为数据量比较大,用sqlldr装载起来速度比较快,所以采用了这种方式,结果在装载得时候也出现错误,吧解决方法贴出来,做个总结。
数据是这样得:
|111| |LF0003.lob| |03-JUN-2007 AD 00:00:00|
|222| |LF0004.lob| |01-JUN-2007 AD 00:00:00|
控制文件是这么写的:
load data
infile 'dump001.dat'
insert
into table "BTGL"."LOBDEMO"
("AA01"                             CHAR(3) enclosed by X'7C'       ,
 LOBFILE_COL1                       FILLER CHAR                     ,
 "AA02"                             LOBFILE(LOBFILE_COL1) TERMINATED BY EOF NULLIF LOBFILE_COL1 = 'NONE',
 "AA03"                             DATE "DD-MON-YYYY AD HH24:MI:SS" enclosed by X'7C')
结果提示错误:

SQL*Loader: Release 9.0.1.1.1 - Production on 星期四 6月 7 12:43:45 2007

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

控制文件: dump001.ctl
数据文件: dump001.dat
错误文件: dump001.bad
废弃文件: 未作指定
:
(可废弃所有记录)

加载数: ALL
跳过数: 0
允许的错误: 50
绑定数组: 64 行,最大 256000 字节
继续:    未作指定
所用路径:       常规

表"BTGL"."LOBDEMO"
已加载从每个逻辑记录
插入选项对此表INSERT生效

列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
"AA01"                              FIRST     3         | CHARACTER           
LOBFILE_COL1                         NEXT     1           CHARACTER           
  (FILLER FIELD)
"AA02"                            DERIVED     *  EOF      CHARACTER           
    动态 LOBFILE。  文件名在字段 LOBFILE_COL1 中
    NULL if LOBFILE_COL1 =0X4e4f4e45(字符'NONE')
"AA03"                               NEXT     *         | DATE DD-MON-YYYY AD HH24:MI:SS

记录 1: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01858: 在要求输入数字处找到非数字字符

记录 2: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01858: 在要求输入数字处找到非数字字符

记录 3: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01858: 在要求输入数字处找到非数字字符

记录 4: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01858: 在要求输入数字处找到非数字字符

表"BTGL"."LOBDEMO":
0 行加载成功
由于数据错误, 4 行没有加载。
由于所有 WHEN 子句失败, 0 行没有加载。
由于所有字段都为空的, 0 行没有加载。

为结合数组分配的空间:    17152字节(64行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:        0
读取的逻辑记录总数:        4
拒绝的逻辑记录总数:        4
废弃的逻辑记录总数:        0

从星期四 6月  07 12:43:45 2007开始运行
在星期四 6月  07 12:43:45 2007处运行结束

经过时间为: 00: 00: 00.15
CPU 时间为: 00: 00: 00.05

---------数据恢复 oracle数据库恢复专家 13352468096 QQ:9417901 网站:http://www.sosdb.com-----

是CTL文件写得有问题

修改ctl文件为:
load data
infile 'dump001.dat'
insert
into table "BTGL"."LOBDEMO"
 FIELDS TERMINATED BY " " OPTIONALLY ENCLOSED BY '|'
TRAILING NULLCOLS
("AA01"                             CHAR(3)      ,
 LOBFILE_COL1                       FILLER CHAR                     ,
 "AA02"                             LOBFILE(LOBFILE_COL1) TERMINATED BY EOF NULLIF LOBFILE_COL1 = 'NONE',
 "AA03"                             DATE "DD-MON-YYYY AD HH24:MI:SS"   )

然后运行,出现:

列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
"AA01"                              FIRST     3  WHT O (|) CHARACTER           
LOBFILE_COL1                         NEXT     *  WHT O (|) CHARACTER           
  (FILLER FIELD)
"AA02"                            DERIVED     *  EOF      CHARACTER           
    动态 LOBFILE。  文件名在字段 LOBFILE_COL1 中
    NULL if LOBFILE_COL1 =0X4e4f4e45(字符'NONE')
"AA03"                               NEXT     *  WHT O (|) DATE DD-MON-YYYY AD HH24:MI:SS

记录 1: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01843: 无效的月份

记录 2: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01843: 无效的月份

记录 3: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01843: 无效的月份

记录 4: 被拒绝 - 表 "BTGL"."LOBDEMO" 的列 "AA03" 出现错误。
ORA-01843: 无效的月份

表"BTGL"."LOBDEMO":
0 行加载成功
由于数据错误, 4 行没有加载。
由于所有 WHEN 子句失败, 0 行没有加载。
由于所有字段都为空的, 0 行没有加载。

---------数据恢复 oracle数据库恢复专家 13352468096 QQ:9417901 网站:http://www.sosdb.com-----

发现为DATE格式问题,然后设置nls_lang解决问题。
c:\>set nls_lang=amerIcan_america.zhs16gbk

c:\>sqlldr btgl/pass control=dump002.ctl direct=true

检查发现数据没问题。

问题解决

[align=right][color=#000066][此贴子已经被admin于2008-6-16 16:32:28编辑过][/color][/align]

---------数据恢复 oracle数据库恢复专家 13352468096 QQ:9417901 网站:http://www.sosdb.com-----
在sqlldr中使用数据库sequence的例子:
In the first example, all of the fields are
located in the datafile based on position, which makes this easier.
Another example below covers data that is comma delimited.

We want to load the data into the following table:
   SQL> CREATE TABLE load_db_seq_positional
     2  (seq_number NUMBER,
     3   data1 NUMBER,
     4   data2 CHAR(15) );

We will use the following sequence:
   SQL> CREATE SEQUENCE db_seq
     2    START WITH 1
     3    INCREMENT BY 1;

The control file would look like:
   LOAD DATA
   INFILE *
   INTO TABLE load_db_seq_positional
   (seq_number "db_seq.nextval",
    data1 POSITION(1:5),
    data2 POSITION(6:15),
   )
   BEGINDATA
   11111AAAAAAAAAA
   22222BBBBBBBBBB

After we run SQL*Loader, our table data looks like:
   SQL> SELECT * FROM load_db_seq_positional;
   SEQ_NUMBER      DATA1 DATA2
   ---------- ---------- ---------------
            1      11111 AAAAAAAAAA
            2      22222 BBBBBBBBBB
---------数据恢复 oracle数据库恢复专家 13352468096 QQ:9417901 网站:http://www.sosdb.com-----

http://www.sosdb.com/tech/oracle/77bbs1.htm

用SQLLDR来装载date类型的控制文件的更多相关文章

  1. [Oracle] SQL*Loader 详细使用教程(3)- 控制文件

    控制文件是SQL*Loader里最重要的文件,它是一个文本文件,用来定义数据文件的位置.数据的格式.以及配置数据加载过程的行为,在sqlldr中以control参数指定控制文件.   在控制文件里配置 ...

  2. oracle sqlldr控制文件模板

    Sqlldr userid=lgone/tiger control=a.ctl LOAD DATA INFILE 't.dat' // 要导入的文件 // INFILE 'tt.date' // 导入 ...

  3. 使用springmvc从页面中获取数据,然后根据获得的参数信息进行修改,如果修改的数据中含有不是基本数据类型的参数。比如传的参数中有Date类型的数据时,需要我们进行参数类型转换。

    1.1 需求 在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式. 1.2 需求分析 由于日期数据有很多格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑 ...

  4. springboot前端传参date类型后台处理方式

    转载:https://blog.csdn.net/xiangluer/article/details/81913137?utm_source=copy 参考如下博客: https://www.jian ...

  5. 为什么@RestController返回的Date类型是Long型

    最近项目中发现一个好玩的事情:本地调试时,返回的date是日期格式yyyy-MM-dd HH:mm:ss,但发布到服务器后就变为Long型的时间戳了 最后查到的原因很简单,因为发布服务器启动时的脚本加 ...

  6. 【Spring】SpringMVC中浅析Date类型数据的传递

    在控制器中加入如下代码: @InitBinder public void initBinder(ServletRequestDataBinder bin){ SimpleDateFormat sdf ...

  7. 向mysql中插入Date类型的数据

    先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...

  8. java基础--java.util.Date类型小结

    首先先来了解一下Date数据类型: . Date类型通常要和另一个 java.text.SimpleDateFormat类联合使用. 把long-->Date: public Date(long ...

  9. ES数据-MySql处理Date类型的数据导入处理

    用ES的小伙伴们,相信大家都遇到过Mapping处理Date类型的数据头疼问题吧. 不用头疼了,我来给你提供一种解决方案: 1.Maping定义为: {  "mappings": ...

随机推荐

  1. 使用mysql作为配置文件的地址

    server端配置 POM文件 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  2. slimScroll的应用(一)

    本类文章依旧是针对初学者来说的,希望大家看到后觉得有用的能给个赞~~ 什么是slimScroll? 一.官网介绍: slimScroll is a small (4.6KB) jQuery plugi ...

  3. logging模块进阶

    python利用logging模块来记录日志主要涉及四个类 logger提供了应用程序可以直接使用的接口 handler将logger创建的日志提供的输出发送到指定目的地. filter起到过滤作用, ...

  4. 递归的可视化(Fibonacci)

    递归的可视化 修改递归函数,使其能够显示打印出每次函数递归调用的形参的值. 每一级调用的输出都带有一级缩进,就是使得程序的输出清晰.有趣并且有含义. 思路 以斐波那契数列为例,假设n=5,递归的形参如 ...

  5. jquery命名冲突

    nodeName是jquery的关键字

  6. uva1336 Fixing the Great Wall

    用到了kase避免memset超时 #include<cstdio> #include<cstring> #include<cmath> #include<a ...

  7. mysql利用binlog恢复数据

    需求:需要给开发提供一个2018年9月30号的数据,按照我们公司正常备份策略来说,直接找到对应时间的备份数据,解压导入即可,恰好这个时间节点的数据没有,只备份到2018年9月25号的,糟糕了吧 咋办呢 ...

  8. iview table icon dorpdown html页面级别vue组件 #vuez#

    iview table icon dorpdown html页面级别vue组件 <!DOCTYPE html> <html> <head> <meta cha ...

  9. PHP安全之 register_globals

    一.register_globals = Off 和 register_globals = On的区别 register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过 ...

  10. Moebius for SQLServer负载均衡

    搞数据库的都知道:在Oracle上有RAC集群,MySQL也有对应的方案,而SQL Server上直到SQL Server 2012版本的AlwaysOn到来,微软都没有提供一个负载均衡方案,在网上看 ...