sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf

所需积分/C币:50 2019-06-04 22:01:56 6.46MB PDF
收藏 收藏 1
举报

oracle数据导出高效工具,详细介绍了sqluldr2的使用方法和各个参数的含义.
作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net 可指定任意字段分隔符与记录分隔符,分隔符入一定是可见的字符 可自动牛成SQL* Loader的控制文件,方便在其他 Oracle库上进行导入 丰富的性能调整及功能选项,简化了调优任务 ●可根据运行返回值确定是否成功执行导出任务,有利于用脚本来处理 用标准C语言写成,多个平台编译执行,如 Windows/linux/ AIX Solaris/HPIX等。 直接导出数据到G7P格式的压缩文作中,降低磁盘空间,节给成本。 口令加密功能,降底胆本调度中的安全风险 将数据导出成 MySQL或 Oracle数据库上的 nsert语句,而非文本文件。 当然 sqluldr2也有缺点,曾经有人在写邮件问,为什么鼠标双击,只看见窗∏—闪,就 退出了,那是因为这个程序不是图形界面(GUI的。对于大部份终端用户来讲,它是非图形 化的命令行工具,没有导出向导功能而显得不太好用(有国内用户提了这个需求),但不同 平台下的图形编程境不一样,要支持不容易,有时间会研究一下QT的图形界面,这样可 以做到平台通用。但这刚好成就了两个比较专业优点,可以在多个平台編译和执行 ( Windows, Linux,AIX, Solaris,HPUX等),也容易嵌入在其他的脚本中,如 Shell或 Perl中,或其他编程语言(如Java,来自国内的感谢邮件中看到的)中,只要用几次后,就 会习惯它了 软件下载 可以访问如下连接获得部份平台的可执行程序和早期源代码: 最新软件下载:htt:/ ww.anysql. net/sofiware sqluldr zip 早期源码下载:htp:/www.anysql.net/sofiwareociuldr.c 使用方法 进入到命令行中,如 Windows的DOS命令窗口,或 Linux Unix的She窗口,通过各 种命令行参数来告诉 sqluldr?要儆什么,不带任何参数运行 sqludIr2就可以获得命令行的帮 助: 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net SQLMUnLoader: Fast Oracle Text Ul l⊥ Oader (GZIP), Release 3.0.1 (@)Copyright Lou Fangxin 2004/2009, all rights reserved. DonationtoAliPay(arysql@yahoo.com)orPayPal(anyscl@live.com) Usage: SQLLLDR2 keyword=value L, keyword=value, Valid Keywords lISer username/passwordotnsname syl SQL『 ile name query select statement field seperator string between fields record -seperator string be tween records print row header(Yes No) file output fil default: uldrdata, txt) r L DB FILE MULTIBLOCK READ COUNT dl session level sort = set SORT AREA SIZE at session level (UNIT: MB) hash set HASH AREA SIZE at session level (UNiT: MB) serial- set scrial dircct rcad to true at session levcl trace set event 10046 to given level at session level table lable naule in the sqlldr control file control=sqlldr control file and path. mode sqlldr option, INSERT or APPEND or REPLaCE or TRUNCATE log file name, prefix with tc append mode long maximum long field size array array fetch size buffer -sqlldr READSIZE and bINDSIze, default 16(MB) width= customized max column width (wl: w2:...) quote tional quote string rOws print progress for every given rows (default, 1000000 ata disable real data unload (NO, OFF) parfile read command option from parameter file iter lter session SQls to be execute before unload safe use large buffer to avoid ORA-24345 error (Yes No crypt use encrypt. ed conneciton string (Yes No sedf/t - enable character translation function null= replace rull with given value escape escape char for My SQl, da. tahase format =MYSQL: MySQL Insert sQLS, SQL: Insert sQLS. for field and record, you can use Ox to specify hex cheracter code r=0x0dn=0x0a|=0x7c,=0x2c,\t=0x09,:=0x3a,#=0x23,"=0x22 至少要传入两个参数,数据库登录信息和SQL查洵语句,例如: 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net D:\>sqluldr2 scott/tiger query=select from emp 0 rows exported at 2009-11-10 09: 20: 19, size 0 MB. 12 rows exported at 2009-11-10 09: 20: 49, size 0 MB. ouLput file uldrdaLa Lxl closed al 12 rows, size 0 MB. D: sqluldr2 scott/tiger query=emp 0 rows exported at 2009-11-10 09: 20: 55, size 0 MB 12 rows export.ed at 2009-11-10 09: 20: 55, size 0 MB. output file uldrdata txt closed at 12 rows, size u MB 第一个导出命令通过指定 SELECT语句来实现,如果是整表导出,则可以很方便地只 指定一个表名,如第二条命令所示。 要使用其基本功能并不复杂,只要两个参数就可以了。但工具中的这么多的命令行选项 是很多人使用后提出来的需求的总结,让我自已也十分震惊,但它们可以很好地满足工们各 种各样的导出 Oracle数据到文本的需求。 命令行参数 命令行参数的基本格式如下: sqluldr2 prop=valuel prop2=value2 众多的命令行参数中,提供了比较多的功能,可能觉得记不住,但还是有规律可以依的, 可以分为以下几类: ●登录有关 指定目标数据库的登录信息:用户名和密码。或用于生成加密后的登录信息,或是 指定给定的连接信息是否加密的 ●数据有关 指定SQL语句,或指定包含SQL的文件,以及long类型列导出的最大长度 ●格式有关 指定生成文本文件的字段分隔符,记录分隔符,文本文件的名字,是否分成多个文 件导出,以及是否在文本文件的第一行打印字段名。 ●性能有关 些性能参数,妇揿量读出的大小,以及控制会话级sqlr数据库连接的性能优化 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net 参数,如连续读取时的数据块数量、排序区的大小等。 参数有关 用于指定参数设置文件位置。 ●转义有关 在迁移数据到MysQ的实践中,发现需要处理特殊字符及NI值,才能方便地 导入数据到MySQ中 INSERT格式有关 在生成 INSERT语句时,指定以 MySQL方式还是通用的 Oracle方式。由于每种数 据库的SQL语法不一样,目前仅考虑了 MySQL和 Oracle,其他不兼容 Oracle的 则还未支持。 有些命令行选项相当简单,有些则稍徵复杂,还是来看更详细的介绍吧。需要多练习练 才能熟练运用。 登录有关 Sqluldr2不支持交互式提示输入用户名和密码,因此在运行 sqluldr2程序时如果用ps去 查看进程或在系统日志中查看执行过的命令,是可以看到用户名和密码的。为了安全,如果 数据库的版本低于9,可以指定用sys用户登录;或者在 Oracle上创建操作系统验证的用广, 不需要输入密码就可以登录进行导出;或者使用登忌加密功能,在脚木中指定加密后的连接 仨息;也可以将迕接信息写在参数文件中,然后在命令行中指定参数文件的位置,以防在 ps信息中看到密码信息,造成安全漏洞 和登录有关的有两个命令行选项: 选项 格式 作用 user user/pass(@tns指定登录到特定的用户名。 cryp CREATE或ON用于加密或指定加密方式。 使用方法如下,第一行以SYS用户登录(不需要密码),第二行以操作系统验证方式登 录,第三行指定用户名及口的方式。 sqluldr2user=sys…… sqluldr2 user=,.e. sqluldr2user- scott/ tiger@test…… 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net 在使用 Oracle的工具,如 exp/imp时,输入登录信息时,并需要指定选项的名字,为 了保持一样的习惯,当登录信息是第一个命令行选项时,可以不指定选项名称。如下所示: sqluldr 2 sys .a sqluldr2/… sqluldr2 scolL/Liger@test ea 直接指定反斜杆为登录信息时,是指用架作系统难证的用户进行登录,如何建这样的用 户,可以参靠有关 Oracle用户管理的文档,在大部份 Oracle管理的图书中都有详尽的解释 和说明,在DBA的学习过程中必然会学到这一点。 以SYS用户登录或以操作系统验证方式登录一般都要求在数据库服务器上运行,但实 际上,更多的导出不是在数据库服务器上执行的,而是在远程客户端机器上执行的,这就要 求提供连接信息,将连接信息放在参数文件(后面会介绍)中,也不是提高安全性的最佳做 法,这时可以使用 sqluldr2提供的连接信息加密功能。 首先是对用凵令进行加密,得到 sqluldr?加密后的字符串,给 sqluldr2指定连接信息, 并指定“ crypt”选项值为“ CREATE”,如下所示 D: sqluldr2 user-scott/tiger crypt=create 4899919fa603950bfafcb74dd661690345ac509d89921dcc7f043ccac 19ffa54 45ac 5e9d8992ldce7f043eeae 19ffa5445ac5e9d89921dce7f043eeae 19ffa54 得到了加密后的字符串,接下米使用时,用加密后的字符串米提供连接信息,并指定 “ crypt”选项值为“ON"”,如下所示 D:>sqluldr2 4899919fa603950bfafcb71dd661690315ac5e9d89921dce7f043eeae19ffa5145ac5e 9d8992ldce7f043eeae19ffa5445ac5e9d8992ldce7f043eeae 19f1a54 crypt=on query-emp o rows exported at 2009-11-10 09: 49: 57, size 0 MB 12 rows exported at 2009-11-10 09: 49: 57, size 0 MB. output file uldrdata txt closed at 12 rows, size o MB. 这个功能使得, sqluldr2可以被用于更多的关键场合。现在越来越多的企业对系统的安 全提出了更高的要求,对于脚本或程序中的安全功能十分重视,而 sqluldr2是一个附合安全 需求的DRA工具。 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net 数据有关 要导出数据就必须指定一个SQL语句,作为导出的数据来源,就算是全表导出,也要 写成一个SQL语句;另外 sqluldr2并不完全支持long类型,只能导出指定长度以内的long 类型数值。有四个选项和这个两个能功有关。 选项 格式 作用 quer select∴” 指定一个SQL语句,通常用双引号括直来。 文件名 指定包括SQL语句的文本文件名。 long 字节数 指定导出ong类型时的最大长度,最大32K Yes或No 指定第一行是否输出列名,默认N Query选项用于将整个SQL语句写在命令行,适合于比较简单的SQL句;而sq选 项则指定一个包括SQL语句的文本文件,适合于比较复杂的SQL语句。需要注意的是在 SL语句的最后不要加分号。long选项用于控制读取long类型时数据的最大长度,在编写 程序时,为了简单,就没有提供对long类型的全部支持,囚为long类型不能实现 Array Fetch, 必须要一条一条处理,对于一个long类型的值可能要分能多次 Fetch,有一定的复杂性,另 外考虑long类型的使用情况不多,就打折处理了。最大可指定的长度为2MB:默认是4000。 使用 query参数在命令行指定一个简单的 SELECT语句: D:\>sqluldr2 scoll/iger query-se 0 rows exported at 2009-11-10 09: 20: 49, size 0 MB. 12 rows exported at 2009-11-10 09: 20: 49, size 0 MB oulput file uldrdald Lxl closed al 12 rows, size O MB 如果要导出一整个表的数据,简单起见,也可以直接在 query中指定表名,如下所示: D:\>sqluldr2 scott/tiger query-crp 0 rows exported at 2009-11-10 09: 20: 55, size 0 MB 12 rows exported at 2009-11-10 09: 20: 55, size 0 MB output file uldrdata txt closed at 12 rows, size 0 MB. 如果SQL诘句很复杂或很长,则很难在命令行指定,这时可以通过編写一个SQL文件, 文件中包含复杂的SQL(要注意的是,SQL浯句的最后不要有分号或反斜杆),然后告诉 qluldr?从指定SQL文件中读取复杂的SQL语句,进行数据导出,如下所示: 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net D: \>cat emp. sql from emp D:\>sqluldr2 scott/tiger sql=emp. sql 0 rows exported at 2009-11-10 09: 20: 55, size 0 MB 12 rows exported at 2009-11-10 09: 20: 55, size 0 MB. cutput file uldrdata tx. closed at 12 rows, size 0 MB 有网友要求在文本文件的第一行能输出字段名,以方便在导入到 Excel中时能区分字段。 如果我们要用文本方式来长期保存历史数据,最好也在文件的第一行加上字段名,以免时间 长了,不知道各个列的函义。可以用head选项来实现,如下所示: sqluldr2 scott/tiger sql=emp. sql field=, head=yes 米看一下生成的文件文件中的内容: EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO 7369, SMITH, CLERK,7902,1980-12-1700:00:00,800,20 7499, ALLEN, SALESMAN,7698,1981-02-2000:00:00,1600,300,30 7521,WARD, SALESMAN,7698,1981-02-2200:00:00,1250,500,30 756, JONES, MANAGER,7839,1981-04-0200:00:00,2975,,20 7654, MARTIN, SALESMAN,7698,1981-09-2800:00:00,1250,1400,30 7698, BLAKE, MANAGER,7839,1981-05-0100:00:00,2850,,30 7782, CLARK, MANAGER,7839,1981-06-0900:00:00,2450,10 7788,sCoT, ANALYST,7566,1987-04-1900:00:00,30,20 7839,KING, PRESIDENT,1981-11-1700:00:00,50,10 7844, TURNER, SALESMAN,7698,1981090800:00:00,1500,0,30 7876,ADAS, CLERK,7788,1987-05-2300:00:00,1100,,20 7900, JAMES, CLERK,7698,1981-12-0300:00:00,950,30 第一行显示字段名,是第一个外来的需求,由淘宝网的DBA提出的。 格式相关 固定格式的文本需要能区分出不同的字段和记录,要区分不同的字段,就要在两个宁段 的值之间加入特定的符号进行区分,如逗号或竖线,只要这些值不会出现在字段值中,就可 以用来区分;要分区不同的记录,就需要在两条记录之间插入特定的符号进行分隔,如换行 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net 作者:楼方鑫(网名:dcb.a)个人主页:htp:/www.anysql.net 符,如果在字段值中没有换行符,那么在文本文件中的一行就表示一条记录。例如很多人熟 悉的用 Excel可以直接打开的CSV文件,如果字段值中不会出现逗号和换行符,简单地说 其实就是用逗号分隔字段,用换行符分隔记录的文本文件。例如: 7369, SMITH, CLERK,7902,1980-12-1700:00:00,800,20 7499,ALEN, SALESMAN,7698,1981022000:00:00,1600,300,30 7521,MARD, SALESMAN,7698,1981-022200:00:00,1250,500,30 7566,J0NFS, MANAGER,78:9,1981-04-0200:00:00,2975,20 7654, MARTIN, SALESMAN,7698,1981-09-2800:00:00,1250,1400,30 7698, BLAKE, MANAGER,7839,1981-05-0100:00:00、2850,30 7782, CLARK, MANAGER,7839,198106-0900:00:00,2450,,10 7788, SCOTT, ANALYST,7566,1987-04-1900:00:00,3000,20 7839,KING, PRES IDENT,1981-11-1700:00:00,5000,10 7844, TURNE, SALESMAN,7698,1981090800:00:00,1500,0,30 7876,ADAs, CLERK,7788,1987-05-2300:00:00,1100,20 7900, JAMES, CLERK,7698,1981-12-0300:00:00,950,,30 7902,FORD, ANALYST,7566,1981-12-0300:00:00,3000,20 或者不用分隔符来区分宇段,使每个字段都导出成固定长度的值,如下所小: 7369 SMITH CLERK79021980-12-1700:00:00800 20 7499 ALLEN SALESMAN76981981-022000:00:00160030030 7521NARD SALESMAI76981981-022200:00:00125050030 7566 JONES MANAGER78391981-040200:00:002975 7654 MARTIN SALESMAN76981981-092800:00:001250140030 7698BLAKE MANAGER78391981-05-0100:00:002850 30 778 LARK MANAGER78391981-06-0900:00:002450 7788sC0 TT ANALYST75661987-04-1900:00:003000 20 7839KING PRESIDENT1981-11-1700:00:005000 7844 TLRNER SALESMAN76981981090800:00:0015000 30 7876 ADAMS CLERK7788198705-2300:00:001100 20 790 JAMES CLERI76981981120300:00:00950 30 7902FORD ANALYST75661981-120300:00:003000 20 有两个选项可以用分别用来指定字段分隔符和记录分隔符 选项 格式 作用 Field 分隔符 指定字段分隔符,默认为逗号 record分隔符 指定记录分隔符,默认为回车换行, Windows下的换行 quote 引号符 指定非数字字段前后的引号符 例如现在要改变默认的字段分隔符,用“#”米分隔记录,导出的命令如下所示: 作者;楼方鑫(网名;dcb,a)个人主;htp:/www.anysql.net

...展开详情
试读 33P sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    crxdejj 好工具!值得拥有!
    2019-09-24
    回复
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf 50积分/C币 立即下载
    1/33
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第1页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第2页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第3页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第4页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第5页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第6页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第7页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第8页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第9页
    sqluldr2超详细使用教程-loracle数据导出工具及方法.pdf第10页

    试读已结束,剩余23页未读...

    50积分/C币 立即下载 >