Heim > Datenbank > MySQL-Tutorial > Hauptteil

sqlldr批量导入导出数据测试

WBOY
Freigeben: 2016-06-07 16:49:23
Original
1171 Leute haben es durchsucht

sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式

sqlldr是在处理大数据量的操作中建议采用的方式,它有许多性能想关的开关,能最大程度的减少redo,undo的生成,控制数据的处理方式(insert,append,replace,truncate)

因为项目需要,对比datapump性能还是不理想,所以还是希望采用sqlldr来做。个人做了简单的测试。

根据thomas kyte的介绍,并行执行路径加载时最快的方式,能够直接写只格式化的数据块,最大限度的减少redo,undo的生成。

Linux环境下sqlldr一个csv文件

sqlldr加载文件,ORA-01722: invalid number解决

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

sqlldr 导入乱码 Oracle客户端字符集问题

Oracle sqlldr导入数据使用默认值和提高性能的方法

先写了如下的脚本。可以动态的从某个用户的表中生成元数据。
 
sqlplus -s $1  set pages 0
 col object_name format a30
 set linseize 10000
 set feedback off
 set colsep ','
 spool $2.lst
 select *from $2 ;
 spool off;
 EOF
 
运行后生成的数据大体如下。
 [ora11g@rac1 sqlldr]$ ksh spooldata.sh n1/n1 t
    370753,    10205,KU$_DOMIDX_OBJNUM_VIEW        ,VIEW
    370754,    10207,KU$_OPTION_OBJNUM_T          ,TYPE
    370755,    10208,KU$_EXPREG                    ,VIEW
    370756,    10210,SYS_YOID0000010209$          ,TYPE
    370757,    10209,KU$_OPTION_OBJNUM_VIEW        ,VIEW
    370758,    10211,KU$_OPTION_VIEW_OBJNUM_VIEW  ,VIEW
    370759,    10212,KU$_MARKER_T                  ,TYPE
    370760,    10214,SYS_YOID0000010213$          ,TYPE
    370761,    10213,KU$_MARKER_VIEW              ,VIEW
    370762,    10215,KU$_TABPROP_VIEW              ,VIEW
    370763,    10216,KU$_PFHTABPROP_VIEW          ,VIEW
    370764,    10217,KU$_REFPARTTABPROP_VIEW      ,VIEW
    370765,    10218,KU$_MVPROP_VIEW              ,VIEW
    370766,    10219,KU$_MVLPROP_VIEW              ,VIEW
    370767,    10220,KU$_TTS_VIEW                  ,VIEW
    370768,    10221,KU$_TAB_TS_VIEW              ,VIEW
    370769,    10222,KU$_TTS_IND_VIEW              ,VIEW
    370770,    10223,KU$_IND_TS_VIEW              ,VIEW
    370771,    10224,KU$_CLU_TS_VIEW              ,VIEW
 
然后准备控制文件 sqlldr.ctl,把数据从t加载到tt里面去。
 load data
 into table tt
 fields terminated by ','
 (id,object_id,object_name,object_type)
 
尝试导入:
 [ora11g@rac1 sqlldr]$ sqlldr n1/n1 control=sqlldr.ctl data=t.lst
 SQL*Loader: Release 11.2.0.3.0 - Production on Tue May 27 08:09:25 2014
 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
 但是没有任何的反馈。
 查看自动生成的sqlldr.log
 里面有如下的错误。
 
  Column Name                  Position  Len  Term Encl Datatype
 ------------------------------ ---------- ----- ---- ---- ---------------------
 ID                                  FIRST    *  ,      CHARACTER           
 OBJECT_ID                            NEXT    *  ,      CHARACTER           
 OBJECT_NAME                          NEXT    *  ,      CHARACTER           
 OBJECT_TYPE                          NEXT    *  ,      CHARACTER           
 

Record 1: Rejected - Error on table TT, column OBJECT_TYPE.
 Field in data file exceeds maximum length
 Record 2: Rejected - Error on table TT, column OBJECT_TYPE.
 Field in data file exceeds maximum length
 Record 3: Rejected - Error on table TT, column OBJECT_TYPE.
 Field in data file exceeds maximum length
 Record 4: Rejected - Error on table TT, column OBJECT_TYPE.
 Field in data file exceeds maximum length
 
尝试了好一会儿,最终发现时set linesize的时候长度设置的比较大,在根据逗号','来解析的时候,最后一个字段的长度就包含了剩余的空格,最终加载的时候就会发现它的长度太大了。已经超出了表定义的长度。
 这种情况,我总不能一个一个指定长度吧。
 这时候想到trimspool的功能,尝试果然奏效。
 spooldata.sh的脚本内容如下:
 sqlplus -s $1  set pages 0
 col object_name format a30
 set linesize 10000
 set trimspool on
 set feedback off
 set colsep ','
 spool $2.lst
 select *from $2 where rownum spool off;
 EOF
 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!