Home  >  Article  >  Database  >  Oracle sqlldr导入以回车和回车换行字符结尾的文本

Oracle sqlldr导入以回车和回车换行字符结尾的文本

WBOY
WBOYOriginal
2016-06-07 17:11:272164browse

在一个大文本中(超过1.5G),当有同时存在回车换行以及回车字符结尾时,如果换行结尾的量大于sqlldr默认缓冲1048576时候,会报错

在一个大文本中(超过1.5G),当有同时存在回车换行以及回车字符结尾时,如果换行结尾的量大于sqlldr默认缓冲1048576时候,会报错。

SQL*Loader-510: 数据文件 (XXX.txt) 中物理记录超过最大限制 (1048576)

SQL*Loader-2026: 加载因 SQL 加载程序无法继续而被终止。

网上搜很久,解决方法

修改 readsize — 读取缓冲区的大小 (默认 1048576) 修改为 20971520

但是还是报错

SQL*Loader-510: 数据文件 (XXX.txt) 中物理记录超过最大限制 (20971520)

SQL*Loader-2026: 加载因 SQL 加载程序无法继续而被终止。

这边简单分析下原因,sqlldr加载到我这边txt文本中第一行以回车换行符结尾,就默认所有行都以回车换行符结尾了,当加载到以换行符结尾的文本区域时由于换行结尾的行数过大,缓冲区无法装载而报错。

解决方法:

INFILE "xxx.txt" "str X'0A'"

0A代表换行符,即将换行符一起装载,相当于定义新行结尾符号。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn