sqluldr2使用几例

 

 

 

sqluldr2 是楼方鑫(d.b.c.a)编写的一个快速导出oracle 数据的工具。本文主要介绍如何使用这个工具实现工作中的几个需求。

 

一、导出文件分卷

对于压缩文件winrar, 一个比较深的功能就是压缩后的文件还是比较大时,不方便复制时,可以进行分卷压缩,制定每个压缩分卷文件的大小。同样,对于使用Toad 或者PL/SQL developer 工具导成文件文件时,由于缺乏这个功能,常常造成单个文件过大,生成时间过长。

sqluldr2 工具有一个rows参数,除了类似exp 工具的feedback 参数,每导出<rows>行数据,自动输出一行提示信息外,还可以结合batch 参数,如果batch 参数设为yes, 则每<rows>行数据生成一个导出文件。

此外size 参数可以指定导出文件的最大的大小。它与rows参数 取更严厉的要求来确定分卷文件的大小。

由于按多个文件输出,因此在指定输出文件名时,需使用动态文件名,例如指定file参数为orders_%B.csv,其中%B表示在多个文件导出时,表示文件序号。

例如,sqluldr2.par 定义为如下:

user=system/manager@dbserver

query=select   /*+ parallel(8)  */  * from  orders 

head=no

rows=1000000

file=d:\data\orders_%B.csv

log=d:\data\sqluldr.log

text=CSV

fast=yes

batch=yes

size=500

control=d:\data\order.ctl

mode=truncate

table=orders

 

执行起来:sqluldr2  parfile=./sqluldr2.par 

 

二、ORACLE跨数据库的导入导出

我们将数据导成文本,其最终目的还是要导入到其它数据库。 导入其它ORACLE数据库,最快的方法就是使用ORACLE 自带的sqlldr 工具。

Sqlldr 使用的控制文件,可以在第一部分中control、mode和table 参数指定后,生成控制文件,可以修改这个文件以适合实际使用。

如果我们先把数据导成文本文件,再使用sqlldr 导入到数据库,由于涉及到磁盘的写入读取,可能在大数据量时影响速度。因此可以将sqluldr2 的输出到标准输出设备(屏幕),而sqlldr从标准输出设备上读取入库。

可以将sqluldr2的file 参数设置为”-“, sqluldr2将输出到标准输出设备,修改sqlldr 中的控制文件的INFILE 参数为"-" (对于windows 和unix 参数),使用管道模式,进行数据导出装载。

此外,由于源(sqluldr2导出的苦)和目标数据库(sqlldr 导入库)的字符集不一样(这也是我们之所以采用文本导出方式的原因), 我们可以在NLS_LANG 环境变量和目标数据库字符集一致的情况下, 设置sqluldr2的charset 参数与源数据库字符集一致,避免来回修改NLS_LANG 环境变量。

举例:

在sqlldr 中的控制文件 指定INFILE 参数:

 LOAD DATA

INFILE "-"

源数据库字符集为US7ASCII ,目标数据库字符集ZHS16GBK, 当前NLS_LANG 为AMERICAN_AMERICA.ZHS16GBK

sqluldr2  user=system/manager@dbserver1   query="select   /*+ parallel(8)  */   * from  orders where rownum <10" charset=US7ASCII      file=- |  sqlldr guoge/guoge@dbserver 2control=D:\order.ctl

注意,的INFILE 参数为"-" 对于XE 下的sqlldr 仿佛无效。

 

三、MYSQL 数据库的导入

ORACLE 数据也可以导入到MYSQL 数据库,sqluldr2的参数format指定为mysql, 输出的则为MYSQL语句,可以直接执行。例如:

sqluldr2 comm/comm@dbserver  table=app_roles format=mysql quote=0x27 escape=0x53 null=null  query=" select * from app_roles" file=- | mysql -h 21.103.117.51  -uroot -pqwxtpwd  test

 

 

四、导出后压缩

sqluldr2 其实可以在导出是就进行压缩,文档上说“当文件名(“FILE”选项)的后缀以小写的“.gz”结尾时,会将记录直接写入到GZIP格式的压缩文件中”,但仿佛对WINDOWS无效。其实我们可以结合组合命令。例如:

sqluldr2  parfile=./sqluldr2.par  &&  winrar a  -afrar  -ibck -m5   -df    -ep -r orders.rar d:\data

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9036/viewspace-1980591/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9036/viewspace-1980591/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL*Loader是Oracle数据库提供的一个工具,用于数据从外部文件加载到数据库表中。SQL*Loader的命行工具是sqlldr,而sqluldr2sqlldr的一个别名。 要使用sqluldr2(即sqlldr),您需要按照以下步骤操作: 1. 准备数据文件:将要加载到数据库表中的数据保存在一个文本文件中。确保文件的格式与目标表的结构相匹配,并且每行数据的字段与表的列对应。 2. 创建控制文件:控制文件是一个描述如何加载数据的文本文件。它指定了数据文件的位置、格式、目标表等信息。您可以使用文本编辑器创建控制文件,并将其保存为一个扩展名为.ctl的文件。 3. 编写控制文件:在控制文件中,您需要指定数据文件的位置、目标表的名称以及字段与列之间的映射关系。您还可以定义一些加载选项,如并行加载、跳过错误等。 4. 执行加载操作:打开命令行终端(或命令提示符),导航到sqlldr(或sqluldr2)所在的目录,并执行以下命令: ``` sqlldr username/password@database control=control_file.ctl ``` 其中,username是您的Oracle数据库用户名,password是密码,database是数据库连接信息,control_file.ctl是您创建的控制文件。 5. 查看加载结果:执行完加载操作后,sqlldr会将加载的结果信息打印在屏幕上。您可以检查加载是否成功,并根据需要进行调整和修正。 请注意,以上步骤提供了一个基本的使用方法,实际使用中可能还涉及其他参数和选项。您可以参考Oracle官方文档或其他相关资源,详细了解sqlldr(即sqluldr2)的更多用法和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值