使用sqlldr向Oracle导入大的文本(txt)文件

我们有多种方法可以向Oracle数据库里导入文本文件,但如果导入的文本文件过大,例如5G,10G的文本文件,有些方法就不尽如意了,例如PLSQL
Developer中的导入文本功能,如果文本文件过大,不仅导入速度太慢,中间还容易出错。这时Sqlldr就能大显身手了,Sqlldr可以每秒向Oracle插入5W条数据,可以自定义控制文件,进行导入控制,而且导入过程不易出错,下面简易记录导入过程。


1.Sqlldr导入控制文件说明


 1 load data
2 infile ‘/home/oracle/42.txt‘ //文本文件的绝对位置
3 append into table doupoidx            //要导入的表名称
4 fields terminated by ‘,‘             //分隔符定义,这里是逗号
5 OPTIONALLY ENCLOSED BY ‘"‘          //过滤"号
6 TRAILING NULLCOLS              //对应字段的顺序。
7 (
8 time TimeStamp ‘yyyy-mm-dd hh24:mi:ss‘,
9 price,
10 volume,
11 interest
12 )

2.在Oracle用户下执行导入命令

sqlldr  userid=scott/[email protected] control =/home/oracle/input.ctl
//用户名/密码@实例名 control=控制文件的位置


关于 optionally enclosed by 的小测试

左边没引号右边有引号:成功,原样导入
111"
222""
333"""

左边有引号右边没引号:失败, second enclosure string not present
"44
""555
"""666

左右有相等的奇数个引号,成功,引号数=2n+1时导入数据带有n个引号
"777"
"""888"""

左右有相等的偶数个引号,失败, no terminator found after TERMINATED and ENCLOSED field
""999""
""""AAA""""

一边奇数一边偶数:失败, 错误信息为上述两种
"BBB""
""CCC"
"""DDD""
""EEE"""

两边不等的偶数:失败, no terminator found after TERMINATED and ENCLOSED field
""FFF""""
""""GGG""

两边不等的奇数:成功,引号数=2n+1时导入数据带有n个引号
"HHH"""
"""III"

总结:要么左边不能带引号;如果有引号左右都必须为奇数个

 

时间: 2024-10-11 21:14:58

使用sqlldr向Oracle导入大的文本(txt)文件的相关文章

MYSQL数据库导入大数据量sql文件失败的解决方案

1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和数据"  .保存文件db_mras.sql文件. 2.导入sql文件.在MYSQL中新建数据库db_mras.选择数据库-----右击选择"运行SQL文件"-----选择文件db_mras.sql,运行. 现在发现运行失败,提示错误"MySQL server has g

Aspose.Words使用教程之如何写入纯文本(TXT)文件

Aspose.Words可以通过使用[Document]构造函数和其他文档格式一样输入纯文本数据. Example 输入一个纯文本文件到一个Aspose.Words文档对象里面. C# using System;   using System.IO;   using System.Reflection;using System.Text; using Aspose.Words; namespace LoadTxt   {   class Program   {   public static v

【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp

一.本人环境描述      1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0      2.Linux为centos6.5 32位,安装在Oracle VM VirtualBox虚拟机上      3.win7上装有ftp服务 二.功能实现描述      用shell的crontab命令定时执行某个.sh文件,此文件的功能已实现生成oracle表的数据到本地txt文件,并上传到ftp,必要时可记录执行日志. 三.步骤      1.在centos中安装orac

批量将ANSI文本txt文件转换成UTF8编码格式 (vbs方法)

准备两个文件即可 conv.vbs run.bat conv.vbs源码 '用法:将要更改编码的所有文件放到同一个文件夹中,将文件夹拖到该vbs上,输入要转换成的字符编码 Dim fso,fd,fl,f,fdpath,charset On Error Resume Next If WScript.Arguments.Length>=1 Then fdpath = WScript.Arguments(0) Else fdpath = InputBox("E:\xunlian\新增加的训练集&

sqlldr 向oracle导入csv、txt文件

1.创建控制文件 文件名.ctl 内容 load data   --文件头部 infile '/home/oracle/42.txt'  --要导入文件的绝对路径 truncate  --清表用 into table  用户名.表名 --必须为空表 --append into table  --原表追加 fields terminated by ','   --文件中个列之间的分割字符 Optionally enclosed by '"'  --每个字段都是用""包围 tra

oracle导入Excel表文本数据

首先导Excel表数据要先建和Excel表字段对应的表,然后将Excel表另存为Txt文本, 然后在Plsql客户端点击工具->文本导入器 然后这里要选择用户及其表,点击导入数据就可以 原文地址:https://www.cnblogs.com/mzq123/p/11402721.html

Oracle导入、导出数据库dmp文件

版本 1.实例数据完全导出 即导出指定实例下的所有数据 exp username/[email protected]/orcl file=d:/daochu/test.dmp full=y 2.用户数据导出 即导出指定实例下指定用户的数据,如下为导出用户myoracle1和用户myoracle2的数据 exp username/[email protected]/orcl file=d:/daochu/test.dmp owner=(myoracle1,myoracle2) 3.具体表数据导出

采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中

1. 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件. 2. SQL脚本(MID_DFDZ.ctl) LOAD DATA INTO TABLE MID_T0_TRANStruncateFIELDS TERMINATED BY '|'( stldate, merno, termno, pan, transamt, refno, termssn, batno, transdate, workdate, fee) 3.shell脚本(getD

逐行读写字符串数组到文本txt文件

C语言方式 将字符串数组写入到txt文件中 有五个文件名存储在字符串数组中,欲将其逐行写入到txt文件中保存到磁盘上. 利用fprintf对文件进行格式化输出 void Filewrite() { FILE *fp; char * name[] = {"filen1", "file2", "file3", "file4", "file4"}; fp = fopen("E://test.txt&qu