SQL*Loader-805的解决(r2笔记36天)

使用sql*loader是大型项目中数据迁移的利器。如果是外部系统,其他数据库到oracle的数据迁移,使用文本式文件是最兼容的方式。 sqlldr的加载效率是很高的,同时在oracle 10g以后推出的oracle_loader效率也不容小视。 sqlldr提供了额外的功能来生成external_table的创建和insert脚本,不过control file是关键,今天尝试的时候就出现了一些问题。 > sqlldr n1/n1 control=NAME_DATA_sqlldr.ctl external_table=generate_only SQL*Loader: Release 11.2.0.2.0 - Production on Thu Jul 17 08:50:19 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. SQL*Loader-805: CONTINUEIF not supported by External Table 这个问题在MOS上也没有查到针对性的解决方案,就是提示不支持。 查看control file的内容,如下: > less NAME_DATA_sqlldr.ctl LOAD DATA CONTINUEIF LAST != "|" INTO TABLE NAME_DATA APPEND FIELDS TERMINATED BY '__XXX__' OPTIONALLY ENCLOSED BY '"_"' TRAILING NULLCOLS ( NAME_ID INTEGER EXTERNAL NULLIF (NAME_ID=BLANKS) , SYS_CREATION_DATE DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (SYS_CREATION_DATE=BLANKS) 。。。。。 现在的问题就是使用continueif导致了对于外部表不支持。 生成的数据文件中,每行都是以|结尾 因为在oracle_loader中有records teminated by 的选项,可以尝试先生成external table的脚本,然后在脚本中把“records teminated by newline" 修改为”records terminated by '|'" 修改control file为如下的方式,就是删除了continueif的语句 LOAD DATA INTO TABLE NAME_DATA APPEND FIELDS TERMINATED BY '__DOX__' OPTIONALLY ENCLOSED BY '"_"' TRAILING NULLCOLS ( NAME_ID INTEGER EXTERNAL NULLIF (NAME_ID=BLANKS) 。。。 然后在生成的日志文件中找到了如下的一段内容,简单修改了表明 CREATE DIRECTORY statements needed for files ------------------------------------------------------------------------ CREATE DIRECTORY SYS_SQLLDR_XT_TMPDIR_00000 AS '/dbccbsPT1/oracle/NFTCUS1/export/MIG_SCRIPTS_TRUE/CM2_LOG' CREATE TABLE statement for external table: ------------------------------------------------------------------------ CREATE TABLE NAME_DATA_EXT_TEST ( "NAME_ID" NUMBER(10), 。。。。。 "CONV_RUN_NO" NUMBER(3) ) ORGANIZATION external ( TYPE oracle_loader DEFAULT DIRECTORY SYS_SQLLDR_XT_TMPDIR_00000 ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE BADFILE 'SYS_SQLLDR_XT_TMPDIR_00000':'a.bad' LOGFILE 'a.log_xt' READSIZE 1048576 现在需要做的就是修改NEWLINE为 ’|’ 然后尝试创建。就没有问题了。 SQL> select count(*)from name_data_ext_test; COUNT(*) ---------- 9355

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

10g,11g数据泵的导入问题及解决(19天)

今天在环境上测试expdp/impdp,环境有10.2.0.5.0,11.2.0.2.0的,11g的环境是从10g升级到11gde .是在impdp的时候都报了...

2864
来自专栏Hongten

python开发_python操作mysql数据库

如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装

563
来自专栏乐沙弥的世界

Linux/Unix shell 自动导入Oracle数据库

      使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份...

542
来自专栏乐沙弥的世界

Oracle expdp 时遭遇ORA-39125 ORA-04063

    数据库在使用DataPump导出时碰到了ORA-39125与ORA-04063。完整的ORA-39125提示是Worker unexpected fat...

571
来自专栏乐沙弥的世界

Oracle Scheduler Chain 的用法

      Oracle CHAIN,也就是链,是将一串需要完成的作业连在一起,根据每一个步骤完成的不同结果来确定下面的哪一个动作需要被完成。实际上也就是if ...

571
来自专栏Danny的专栏

无法删除数据库,因为该数据库当前正在使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

602
来自专栏SAP梦心的SAP分享

【SAP HANA】新建表以及操作数据(3)

      账号和数据库都创建好之后,接下来就可以创建表了。来见识一下这个所谓“列式”存储方式的表是长啥样的!       一、可视化新建表 ?       然...

1877
来自专栏杨建荣的学习笔记

listener.ora,tnsnames.ora中一个空格的威力

最近几天被网络监听配置搞得焦头烂额,有时候配置没问题,有时候就出莫名其妙的问题,今天专门花时间总结了一下,希望对大家有所帮助。 listener.ora,tns...

3479
来自专栏杨建荣的学习笔记

mysql常用命令

这几天学习了一下mysql,对于mysql的命令总结如下,发现很多方面和oracle还是差别挺大的。 # mysql -uroot -p Enter passw...

3586
来自专栏java学习

oracle数据库的常用的命令操作!

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 数据库技术是计算机科学技术的一个重要分支。从20世纪50年代中期开始,...

3017

扫描关注云+社区