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 条评论
登录 后参与评论

相关文章

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

MySQL中使用pt-osc的一些小结

Percona的pt-osc工具算是DBA的一个福利工具。想想一个数据量有些大的表,在上面做DDL操作真是一种煎熬,我们也基本理解了这是一种空间换时间的...

1101
来自专栏我就是马云飞

MVVM框架实现组件化之整体结构

? ---- google官方MVVM框架讲解 我前面对比了MVC和MVP《两张图看懂Android开发中MVC与MVP的区别》,可以相对于MVC我们的MVP...

2647
来自专栏CodingBlock

Android查缺补漏(IPC篇)-- Bundle、文件共享、ContentProvider、Messenger四种进程间通讯介绍

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8387752.html

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

关于enq: TX - allocate ITL entry的问题分析(r3笔记第66天)

今天发现系统在下午1点左右的时候负载比较高,就抓取了一个最新的awr报告. Snap IdSnap TimeSessionsCursors/SessionB...

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

使用impdp不当导致的数据丢失问题(r5笔记第1天)

今天有个朋友问我们一个问题,说他在使用了impdp导入数据的时候,使用了TABLE_EXISTS_ACTION=REPLACE这个选项,结果现在数据都给覆盖了。...

3295
来自专栏陈满iOS

iOS开发·由SDWebImage引发的知识点聚合与思考(最新呕心沥血之作)

学习iOS的各种知识点,例如runloop,只懂原理不行,要清楚明白它的应用场景才是真懂;学习SDWebImage的框架源码,只看SDWebImage的业务逻辑...

1193
来自专栏挖坑填坑

使用.net core ABP和Angular模板构建博客管理系统(实现博客列表页面)

991
来自专栏携程技术中心

干货 | MySQL锁之源码探索

1142
来自专栏小鄧子的技术博客专栏

【译】Retrofit 2 - 如何从服务器下载文件

如果你在阅读本文前没有写过任何一行Retrofit请求代码,那么最好看一下前面几篇博客。对于很多Retrofit使用者来说:定义一个下载文件的请求与其他请求几乎...

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

关于interval partitioning(r3笔记65天)

今天一个开发的同事问我一个问题,说在系统中目前需要一个临时的解决方案,定义了一张表,目前想设定为分区表,因为会和外围系统交互产生大量的数据,所以需要按照小时来做...

2628

扫码关注云+社区