以前给山东某单位做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. 508 Most Frequent Subtree Sum 出现频率最高的子树和

    详见:https://leetcode.com/problems/most-frequent-subtree-sum/description/ C++: /** * Definition for a ...

  2. Oozie是什么?

         但是,一般用Azkaban了.(具体见我写的另一篇博客:) 官网:https://oozie.apache.org/ Oozie is a workflow scheduler system ...

  3. 深入理解spark streaming

    spark streaming是建立在spark core之上的,也就说spark streaming任务最终执行还是依赖于RDD模型.在转化成最终的RDD模型执行前,spark streaming主 ...

  4. Java报表之JFreeChart

    一.JFreeChart简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications,servlets以及JSP等使用所设计. JFre ...

  5. asp.net 中文部分显示问号

    很神奇的事情,今天部署了一个网站,页面从数据读取新闻后,有些新闻标题全部显示问题号,有几个新闻能正确显示汉字,然后查看新闻页面又能正常显示汉字. 解决办法: 在异常的页面上加上 < %@ COD ...

  6. python pandas 中 loc & iloc 用法区别

    转自:https://blog.csdn.net/qq_21840201/article/details/80725433 ### 随机生DataFrame 类型数据import pandas as ...

  7. MyBatis学习(四)

    前言 最近比较松懈,下班回家后也懒得学习了.今晚实在是看不下去了,争取时间学习.社会上有这么多的资源,就看谁能抢的多吧.今天就说说MyBatis的动态SQL吧 正文 动态 SQL 通常要做的事情是有条 ...

  8. iOS 如何使用TabbarController

    xcode中给我内置很多app模版,不过很多时候我们需要更加灵活的初始化项目.下面我就简单介绍一下,如何从0开始制作一个tabbar app. 创建个项目,由于我们从头开始写程序,因此理论上对模版没有 ...

  9. centos7 搭建双网卡bond1(主备模式)实例

    前景须知: 在redhat6 中网卡叫bond,在redhat7及centos7中改名team,此处只记录centos7中双网卡主备搭建过程. 应用情景:实现网络的高可用,防止一条网线或交换机故障影响 ...

  10. html upload_file 对象(2018/02/26)工作收获

    php.ini中可以设置上传文件的大小,如果超过设置大小,上传失败.$_File 数组当中接受到的文件对象size为0