前提:安装了oracle客户端。

在“开始”->“运行”,输入“cmd”,回车。在打开的dos窗口里输入:sqlldr。看看是否安装了

下面,我为了快速学习,先忽略参数的说明。只管用一个简单的例子。

我在本机上安装了Linux的oracle数据库,现在先建立一个测试的表:

createtable tdsxhwn.tbtestsqlldr(

id int,

name varchar(10)

)然后配置一个连接服务,别名为LOCALHOST_ORCL

打开PL/SQL即可看

如果没有PL/SQL,也可以在$ORACLE_HOME\client_1\NETWORK\ADMIN\tnsnames.ora文件找到:

LOCALHOST_ORCL=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.88)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

现在,我在“D:\sqlldr”文件夹里创建两个文件:

control.txt文件

data.txt

然后在刚才的dos窗口里输入:

sqlldr userid=tdsxhwn/td$123@LOCALHOST_ORCL control=d:\sqlldr\control.txt log= d:\sqlldr\out.log

上面sqlldr的格式是:

sqlldr userid=用户/密码@服务别名control= control文件路径log=日志文件路径

通过例子来学习例1:用包含数据的文本导入.

1)、现在有一个要导入数据库的数据的文本1.txt,文件存放路径d:\1.txt,格式如下:

123,312u

124,dsfsd

5423,rtdf34

2)、在数据库中创建要导入的表test(数据库用户名/密码:test/test,默认在本机)

create table test

(num number(11),

var varchar2(12)

)

3)、编写ctl控制文件test.ctl,文件存放路径:d:\test.ctl

load data

infile 'd:\1.txt'

append into table test

fields terminated by ','

(num,var)

4)、命令提示符下执行一下命令sqlldr userid=jscs/jscs@jscscontrol=d:\test.ctl注:infile 'd:\1.txt' //需要装载的数据文件的路径,如果数据在本文件中,则用infile *

append into table test //数据载入的表:

(1)append表示表中有数据,加在后面(2)INSERT表示装入空表,有数据则停止。默认值(3)REPLACE原先表中如果有数据,会被删除(4)TRUNCATE如果要载入的数据与现在的数据相同,载入的数据替换现存的数据。fields terminated by ','

//数据用是','格开的,如上(1)处,用by X'09',即16进制的"09"代表TAB制表符,常用于excel转换的tab制表符文件的数据的导入(num,var) //数据表中要载入的字段例2:要导入的数据在ctl文件中1)数据库表同上例1

2)编写ctl控制文件test2.ctl,文件存放路径:d:\test2.ctl

load data

CHARACTERSET 'UTF8'-----字符集设定,这样才能导入中文infile *

append into table test

fields terminated by ','

trailing nullcols---------表示允许为空

(num,var,dat  DATE "YYYY-MM-DD HH24:MI:SS)

begindata

123,312u,2011-12-11 11:11:11

124,dsfsd,2011-12-11

5423,rtdf34,2011-12-11 12:11:11

............

3)命令提示符下执行一下命令sqlldr userid=jscs/jscs@jscscontrol=d:\test2.ctl

例3:创建如下字符串结构表

load data

infile DED20100730099.531

append into table ask_tem_ded

(recordtag position (01:02) char(2),

event_type position (03:12) char(10),

dedtype position (13:14) char(2),

serial position (15:34) char(20),

msisdn position (35:49) char(15),

spcode position (50:69) char(20),

opercode position (70:89) char(20),

chrgtype position (90:91) char(2),

lastdate position (92:105) char(14),

dedtime position (106:119) char(14),

dedfee position (120:125) char(6),

preserve position (126:145) char(20)

)

sqlldr userid=jscs/jscs@jscscontrol=d:\test2.ctl

―――――――――――――――――参数说明――――――――――――――――――

二、有效的关键字:

userid -- ORACLE username/password

control –控制文件

log –记录的日志文件

bad –坏数据文件

data –数据文件

discard –丢弃的数据文件

discardmax–允许丢弃数据的最大值(全部默认)

skip -- Number of logical records to skip  (默认0)

load -- Number of logical records to load  (全部默认)

errors –允许的错误记录数(默认50)

rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认:常规路径64,所有直接路径)

bindsize -- Size of conventional path bind array in bytes(默认256000)

每次提交记录的缓冲区的大小(字节为单位,默认256000)

silent --禁止输出信息(header,feedback,errors,discards,partitions)

direct –使用直通路径方式导入(默认FALSE)

parfile -- parameter file: name of file that contains parameter specifications

parallel --并行导入(默认FALSE)

file -- File to allocate extents from

skip_unusable_indexes-- disallow/allow unusable indexes or index partitions(默认FALSE)

skip_index_maintenance-- do not maintain indexes, mark affected indexes as unusable(默认FALSE)

readsize -- Size of Read buffer                (默认1048576)

与bindsize成对使用,其中较小者会自动调整到较大者。sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。

external_table-- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE(默认NOT_USED)

columnarrayrows-- Number of rows for direct path column array(默认5000)

streamsize-- Size of direct path stream buffer in bytes(默认256000)

multithreading-- use multithreading in direct path

resumable -- enable or disable resumable for current session(默认FALSE)

resumable_name-- text string to help identify resumable statement

resumable_timeout-- wait time (in seconds) for RESUMABLE(默认7200)

date_cache-- size (in entries) of date conversion cache(默认1000)

注意:有两种方式可以指定命令行参数:通过位置或者通过关键字。

(1)通过位置指定命令行参数的例子:'sqlldr scott/tiger foo';

(2)通过关键字指定命令行参数的例子:'sqlldr control=foo userid=scott/tiger';

不能前面使用关键字指定后面通过位置指定的混合方式;

比如:'sqlldr scott/tiger control=foo logfile=log'是允许的;

但'sqlldr scott/tiger control=foo log'不允许。

通过位置指定命令行参数的时候,必须将“位置”放在user/passwd之前。

为清楚起见最好所有命令行参数都用关键字指定。

三、控制文件:一个控制命令的脚本文件,通常以ctl结尾,内容如下:

LOAD DATA

INFILE't.dat'             //要导入的文件

// INFILE 'tt.date'        //导入多个文件

// INFILE *              //表示要导入的内容就在control文件里下面的BEGINDATA后面就是导入的内容

INTO TABLEtable_name  //指定装入的表

BADFILE'c:\bad.txt'    //可选,指定坏文件地址,缺省在当前目录下生成与原文件名一致的.bad文件

//*************以下是4种装入表的方式

APPEND//原先的表有数据就加在后面

// INSERT            //装载空表如果原先的表有数据sqlloader会停止默认值

// REPLACE       //原先的表有数据原先的数据会全部删除

// TRUNCATE            //指定的内容和replace的相同会用truncate语句删除现存数据

//*************指定分隔符

FIELDS TERMINATED BY',' OPTIONALLY ENCLOSED BY '"'

// TERMINATED BY WRITESPACE //以空白分割

用java运行sqlldr:

private void runSqlldr(String path, String logPath) {

// java运行sqlldr

try {

String s = "sqlldr userid=" + info.getGoalUser() + "/"

+ info.getGoalPassword() + "@" + info.getDbAlias()

+ " control=" + path + " log=" + logPath

+ " errors=1000000 rows=10000";

Process process = Runtime.getRuntime().exec(s);

doWaitFor(process);

//这里就该执行完了

process.destroy();

process = null;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private int doWaitFor(Process p) {

int exitValue = -1; // returned to caller when p is finished

InputStream in = null;

InputStream err = null;

try {

in = p.getInputStream();

err = p.getErrorStream();

boolean finished = false; // Set to true when p is finished

while (!finished) {

try {

while (in.available() > 0) {

// Print the output of our system call

in.read();

}

while (err.available() > 0) {

// Print the output of our system call

err.read();

}

exitValue = p.exitValue();

finished = true;

} catch (IllegalThreadStateException e) {

}

}

} catch (Exception e) {

// unexpected exception! print it out for debugging...

e.printStackTrace();

} finally {

if (in != null) {

try {

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (err != null) {

try {

err.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

// return completion status to caller

return exitValue;

}

linux java sqlldr_java sqlldr使用相关推荐

  1. linux java的安装目录,linux java 安装目录

    linux java 安装目录 [2021-02-01 05:04:30]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  2. Linux Java Web 服务器搭建之tomcat安装

    Linux Java Web 服务器搭建之tomcat安装 一 Tomcat 简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是 ...

  3. linux java so 历险

    linux java so 历险 一开始 -bash-4.1# java -cp "/usr/linkapp/bin/tomcat-master/webapps/ROOT/WEB-INF/l ...

  4. Linux java集成安装环境,Linux下Java环境安装

    本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...

  5. java得到文件创建时间linux,linux java获取文件创建时间

    linux java获取文件创建时间 [2021-01-31 07:35:22]  简介: 服务器 背景 有时候我们需要获取文件的创建时间. 例如: 我在研究 <xtrabackup 原理图&g ...

  6. linux java输出到文件,linux java输出到文件内容

    linux java输出到文件内容 [2021-01-30 07:48:37]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&qu ...

  7. linux加水印乱码,linux java程序加水印及中文乱码方案(二)

    上一篇介绍了在linux, centos图片加水印出现乱码的解决方案,<linux java程序加水印及中文乱码方案>, 在真实项目环境下,一是部署在虚拟机服务器,还有项目部署在docke ...

  8. 【踩坑】Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题

    [踩坑]Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题 一. 问题重现 二. 问题解决思路 1. 确认是不是上传就导致数据出错了 2. 是不是平台问题 三. ...

  9. 嵌入式arm linux Java运行环境搭建和注意事项

    嵌入式arm linux Java运行环境搭建和注意事项 我的开发硬件环境 搭建步骤 1. 下载 ORacle 公司的ejdk-8u211-linux-arm-sflt.tar.gz(软件浮点版本,这 ...

最新文章

  1. C#开源磁盘/内存缓存引擎
  2. laravel 发送带附件的邮件
  3. FastDFS 学习笔记
  4. linux+qt导入构建,如何在Qt Creator项目向导中添加自定义构建步骤?
  5. 基于主观感兴趣区域的视频编码实践
  6. jmeter利用influxdb和grafana实现数据可视化
  7. 第一部分----HTML的基本结构与基本标签
  8. ip地址规划工具_ROS、Simulink、Carsim的互联与规划、控制算法的验证
  9. 机器学习之特征选择 (feature_selection)
  10. 统计学贾俊平第六版pdf下载|贾俊平统计学第六版pdf下载电子书
  11. 微型计算机控制第三版,清华大学出版社-图书详情-《微型计算机控制技术(第3版)》...
  12. 联想服务器怎么备份系统软件,联想电脑管家备份电脑驱动程序教程
  13. c语言 误差函数erf代码,高斯(余补)误差函数erf和erfc
  14. 三、Allan方差分析
  15. 基于自适应扰动的疯狂蝴蝶算法-附代码
  16. 【寒江雪】Unity中调用C++的函数和类
  17. 第二篇 第三章防火防烟分区检查(一)
  18. 抓住金三银四的尾巴,解锁程序员面试《刷题神器》
  19. 三入职场 - 你可以从我身上学到这些(附毕业Vlog)
  20. 多传感器融合track fusion

热门文章

  1. BIZKEY便携路由刷OpenWRT
  2. 创建一个图形界面的计算器
  3. BigDecimal处理 四舍五入
  4. mapperbytebuffer.java,深入浅出MappedByteBuffer
  5. 全志tina sys_config.fex和devices tree 的关系
  6. 理财通app的设计与实现(五)
  7. 数据结构:线性表顺序存储
  8. @Autowired 构造方法作用
  9. C语言数组之间赋值详解
  10. 思科ccna认证工程师NETCONF协议详解网工必看