以前给山东某单位做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. android开发学习 ------- RecyclerView多类型实例

    实现RecyclerView多类型的实例:效果如下图所示 public class CarFragment extends Fragment{ private View view; private R ...

  2. this关键字实现串联构造函数调用

    在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数中实现各自的业务逻辑,如果这些业务逻辑的实现并非截然不同的话,显然不符合oop编程思想,极不利于维护,当然,我们也可以通过将相同的逻辑部分 ...

  3. 【转】深入理解Android中的SharedPreferences

    SharedPreferences作为Android中数据存储方式的一种,我们经常会用到,它适合用来保存那些少量的数据,特别是键值对数据,比如配置信息,登录信息等.不过要想做到正确使用SharedPr ...

  4. vue中引入字体图标报错,找不到字体文件

    在用vue + webpack进行开发的时候,在引用字体图标遇到字体无法加载的问题: 报以下错误 搞了好久没搞定,最后才找到解决方法(还是没有找到原因) 修改字体图标的css中引入字体文件的路径 以前 ...

  5. 安装nginx的一些注意事项

    1.如何彻底屏蔽掉Nginx的banner 为了安全或者某些个人的原因,如果要屏蔽掉nginx的banner,要修改以下几个位置: src/http/ngx_http_header_filter_mo ...

  6. Javaweb学习笔记5—Cookie&Session

    今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...

  7. get log

    C:\Users\wb_changxiang.chen\Desktop\get_log_adb.py #! /usr/bin/env pythonimport osimport sysimport t ...

  8. Architecture:架构 元素与关系

    http://www.iso-architecture.org/42010/cm/ Systems have architectures. In the Standard, the architect ...

  9. spring使用elasticsearchrepository时间格式的问题Invalid format: "XXXX-XX-XX" is malformed at "-XX-XX"

    Invalid format: "XXXX-XX-XX" is malformed at "-XX-XX" 新手,刚接触elasticsearch遇到的问题. ...

  10. docker 深入理解之namespace

    namespace 名称空间 docker容器主要通过资源隔离来实现的,应该具有的6种资源隔 namespace 的六项隔离 namespace 系统调用参数 隔离的内容 UTS CLONE_NEWU ...