sqluldr2和sqlldr配合导入导出带有clob字段的问题

ifvlr 2017-02-15 03:55:20
各位好,我在windows环境下用sqluldr2导出一个表,表中带有clob字段,并且clob字段中有部分数据是有回车换行符号在里面的。在sqluldr2的命令中加上table 会自动帮我生成ctl控制文件。但是当我用sqlldr导入时,就各种报错。当然,只导入带有clob字段的表才报错,其他情况好像不报错。


desc M_AM_M_RISKTARGET
risktargetid varchar2(255)
risktargetname varchar2(255)
risktargetdesc clob
risktargettype varchar2(255)
ratio varchar2(255)
auditstate varchar2(128)
modifystate varchar2(128)
estatus char(1)
eversion integer
sourceid varchar2(255)
processinstid varchar2(255)
iscurrentversion char(1)
versiontime timestamp(6)

比如M_AM_M_RISKTARGET 表中有个字段叫RISKTARGETDESC,对于clob类型的字段,sqluldr2生成的控制文件为如下两个。

"LOBF_RISKTARGETDESC" FILLER CHAR(30) ,
"RISKTARGETDESC" LOBFILE("LOBF_RISKTARGETDESC") TERMINATED BY EOF,

然后导入时,就会报错

报错为

SQL*Loader-462: 将 LOB 插入列 "RISKTARGETDESC", 行 6, 表 M_AM_M_RISKTARGET 中时出错
SQL*Loader-646: 列 "RISKTARGETDESC", 行 6, 表 M_AM_M_RISKTARGET 中的 lob 被设置为 EMPTY
SQL*Loader-462: 将 LOB 插入列 "RISKTARGETDESC", 行 7, 表 M_AM_M_RISKTARGET 中时出错
SQL*Loader-646: 列 "RISKTARGETDESC", 行 7, 表 M_AM_M_RISKTARGET 中的 lob 被设置为 EMPTY
SQL*Loader-502: 无法打开数据文件 '25' (在字段 "RISKTARGETDESC" 表 M_AM_M_RISKTARGET 中)
SQL*Loader-553: 未找到文件
SQL*Loader-509: 系统错误: 系统找不到指定的文件。


我的导入导出语句为如下 %%中的内容为传入的参数。可自己设置。

%bin_path%\sqluldr2.exe user=%source_conn% field=":|" table="m_am_m_risktarget" mode="TRUNCATE" file=D:\dwTobg_rap\m_am_m_risktarget.txt query="select * from m_am_m_risktarget t "
sqlldr USERID=%target_conn1% control=D:\dwTobg_rap\m_am_m_risktarget_sqlldr.ctl log=D:\dwTobg_rap\m_am_m_risktarget.log bad=D:\dwTobg_rap\m_am_m_risktarget.bad



如果大家对于我描述的内容不够明确,可以自己建一个带clob字段,并且该字段中有回车换行符,然后用sqluldr2
...全文
1646 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37947479 2018-11-28
  • 打赏
  • 举报
回复
你怎么导出clob的,我试过导出clob太大会报错?设置safe=yes也没用,请问你怎么解决的?
ifvlr 2017-02-15
  • 打赏
  • 举报
回复
引用 1 楼 ifvlr 的回复:
如果大家对于我描述的内容不够明确,可以自己建一个带clob字段的表,并且该字段中有回车换行符,然后用sqluldr2加上table参数导出,然后用sqlldr工具导入到新环境 1 如何保证数据能不报错导入。2如何保持和原表中一样的格式,包括原表中的回车换行符也要导入。
一楼漏了两个字。。
ifvlr 2017-02-15
  • 打赏
  • 举报
回复
如果大家对于我描述的内容不够明确,可以自己建一个带clob字段,并且该字段中有回车换行符,然后用sqluldr2加上table参数导出,然后用sqlldr工具导入到新环境,1 如何保证数据能不报错导入。2如何保持和原表中一样的格式,包括回车换行符。
ODU全称为Oracle Database Unloader,是类似于Oracle的DUL的软件,用于直接从Oracle数据库的数据文件中获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。 ODU有什么功能特点? 支持的Oracle数据库版本包括8i,9i,10g,11g 自动检测数据文件的表空间号和文件号 在有SYSTEM表空间的情况下,自动获取数据字典信息。 支持各种表,普通的HEAP表,IOT表,聚簇(CLUSTER)表。 DESC表,以显示表的列定义 支持10g及以上的大文件(BigFile)表空间 列出表的分区和子分区 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 支持压缩表 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型 支持IOT表导出: 普通IOT表的导出 压缩IOT表的导出 支持IOT表溢出段 支持IOT表分区(包括子分区) 只能在有SYSTEM表空间时才能导出IOT表 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 导出的数据格式包括纯文本和DMP文件两种。以纯文本导出时,能够自动生成建表的SQLSQLLDR导入所需的CONTROL文件(.CTL) 支持同一个库中不同的块大小的数据文件。 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表中,不同LOB列使用不同CHUNCK SIZE的情况 CLOB数据可以导出到与其他列相同的文件中,或存储到单独的文件中 LOB列只有在SYSTEM表空间存在的情况下才能导出 支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。 ODU全面支持64位系统,支持超过4G大小的数据文件。 支持复制操作系统命令不能复制的坏文件 模拟oracle的dump块功能,能够dump数据文件块的数据 目前不支持的功能: 11g的SecureFiles ------------------------ 详细使用说明见 http://www.laoxiong.net/odu
PRM-DUL Oracle数据库恢复工具,一款专为Oracle数据救援而研发的企业级工具。可在多个操作平台(AIX/HPUX/SOLARIS/Linux/Windows)使用并支持对Oracle 9i/10g/11g/12c各版本数据库的数据救援工作。软件基于JAVA 开发,绿色无需安装,图形化操作界面,易于上手使用。可基于单数据文件操作或Oracle ASM存储磁盘操作。 PRM-DUL Oracle数据库恢复工具(简称PRM-DUL)是一款专为Oracle数据救援而研发的企业级工具。从1.0版本发布到现在,已经历了多次功能增强、补丁修正和恢复逻辑改进。PRM-DUL Oracle数据库恢复工具已在多个操作平台(AIX/HPUX/SOLARIS/Linux/Windows)被证明稳定可用。当前版本软件支持对Oracle 9i/10g/11g/12c各版本数据库的数据救援工作。软件基于JAVA 开发,绿色无需安装,下载解压后便可直接使用。(Windows上直接点击prm.bat,在Linux/Unix上运行./prm.sh)注意JAVA版本推荐在1.6版本以上。如果需对裸设备文件进行数据救援,请安装并使用JAVA openjdk版本,除此之外,使用官方JAVA版本既可。图形化操作界面,易于上手使用。使用者无需额外学习一套命令,或者了解ORACLE 的底层数据结构原理即可以通过恢复向导(Recovery Wizard)来恢复数据库中的数据。软件支持对单个数据文件的数据扫描和抽取,同时也支持对Oracle ASM存储数据恢复。其导出的数据既可导出sqlldr导入数据文件,也可通过PRM-DUL的Data Bridge功能直接导出并插入到指定新库中,实现不落地恢复。 PRM-DUL Oracle数据库恢复工具功能 》》可以在不需要运行Oracle数据库的情况下直接针对数据库文件或进行数据解析。 》》支持ASM,可直接读取ASM磁盘并对其中数据文件以及文件中的数据进行扫描解析。 》》支持裸设备数据文件读取。 》》支持LOB字段CLOB, NCLOB和BLOB)恢复,并支持同一个表中,不同LOB列使用不同CHUNK SIZE的情况 》》支持多种Big Endian/Little Endian操作平台(AIX/HPUX/SOLARIS/Linux/Windows)数据库数据恢复 》》支持分区、子分区数据恢复 》》支持各种表,包括普通的HEAP表和聚簇(CLUSTER)表数据恢复 》》支持表被truncate后的数据恢复 》》支持表被drop后的数据恢复 》》支持在没有SYSTEM表空间和数据字典损坏的情况下的非字典模式数据恢复,并能为判断数据类型提供辅助依据 》》支持10g及以上的大文件(BigFile)表空间 》》支持同一个库中不同块大小的数据文件 》》以纯文本导出时,能够自动生成建表的SQL语句和SQL*Loader导入所需的control文件 PRM-DUL Oracle(数据库恢复工具) v4.1更新日志 1. 对使用DELETE命令误删除的数据的救援恢复支持 2. 对在字典模式下LOB数据Data Bridge功能增强,大幅度改善导出性能 3. 增加在非字典模式下LOB数据的Data Bridge支持。 4. 增加对字典模式/非字典模式数据加载信息的重用支持 5. 增加Schema级的DDL导出支持(包含相表,索引,视图建立语句信息) PRM-DUL Oracle数据库恢复工具截图

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧