以前给山东某单位做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. 微服务dubbo面试题

    dubbo的工作原理? dubbo支持的序列化协议? dubbo的负载均衡和高可用策略?动态代理策略? dubbo的SPI思想? 如何基于dubbo进行服务治理.服务降级.失败重试以及超时重试? du ...

  2. nginx配置参考

    server { listen 443 ssl; server_name apps.qimeng.fm; #charset koi8-r; #证书 ssl_certificate /usr/local ...

  3. H+后台主题UI框架---整理(二)

    本篇文章是针对H+后台主题UI框架的整理的第二部分.主要只有一个point.如下: 其代码如下: <div class="ibox float-e-margins"> ...

  4. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  5. Oracle 11g r2 Enterprise Manager (EM) 中文页面调整为英文页面

    Oracle 11g r2 Enterprise Manager (EM) 在中文语言环境下, 部分功能(如包含时间的查询数据库实例: orcl  >  指导中心  >  SQL 优化概要 ...

  6. 两个已排序数组的合并-C语言

    最近在纸上写一个已排序数组的合并时,花了超过预期的时间.仔细想想,这种要放到毕业找工作那会两下就出来了,原因还在于工作后对基础没有重视,疏于练习. 说开一点,现在搜索引擎的发达确实给问题的解决带来了便 ...

  7. (C#)Xamarin.ios 发布到 App Store

    项目做到尾声了,IOS要发布,程序猿力Max来了. 不过就公司开发者账号就弄了一个月多,期间因为申请过D-U-N-S客服联系要公司资料时我们中途说取消了,后来再申请不知多少次了都没再回复... 给美国 ...

  8. 洛谷 P1765 手机_NOI导刊2010普及(10)

    题目描述 一般的手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz * 0 # 要按出英文字母就必须要按数字键多下.例如要按出 ...

  9. app支付宝授权登录获取用户信息

    由后台进行地址的拼接(前台进行授权) // 生成授权的参数 String sign = ""; Long userId1 = SecurityUser.getUserId(); S ...

  10. Python小记-- 读取当前目录下所有文件名

    # -*- coding: utf-8 -*- import os def file_name(file_dir): with open("SelectAllFiles.txt", ...