• Sqlldr用法


         Sqlldr        sql loader可以把一些以文本格式存放的数据顺利地导入到oracle数据库中,它是一种在不同数据库之间进行数据迁移非常方便而且通用的工具。缺点就是速度比较慢,另外对blob等类型的数据就有点麻烦了。 一、用法: SQLLDR keyword=value [,keyword=value,...] 二、有效的关键字:   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 TABLE table_name   // 指定装入的表 BADFILE 'c:\bad.txt'    //可选,指定坏文件地址,缺省在当前目录下生成与原文件名一致的.bad文件 //************* 以下是4种装入表的方式 APPEND           // 原先的表有数据 就加在后面 // INSERT             //装载空表 如果原先的表有数据 sqlloader会停止 默认值 // REPLACE        //   原先的表有数据 原先的数据会全部删除 // TRUNCATE             //   指定的内容和replace的相同 会用truncate语句删除现存数据 //************* 指定分隔符 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' // TERMINATED BY WRITESPACE //以空白分割 TRAILING NULLCOLS           // 表的字段没有对应的值时允许为空 ************* 下面是表的字段 (       col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载       // 如: lg,lg,not 结果 lg lg )       如果没声明FIELDS TERMINATED BY ',' 时,可以用下面两种方式实现同样功能: (1)、为每一列指定分隔符 (     col_1 [interger external] TERMINATED BY ',' ,     col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,     col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg' ) (2)、用位置告诉字段装载数据 (      col_1 position(1:2),      col_2 position(3:10),      col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置      col_4 position(1:16),      col_5 position(3:10) char(8) // 指定字段的类型 ) BEGINDATA         //对应开始的 INFILE * 要导入的内容就在control文件里 10,Sql,what 20,lg,show
  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400838.html
Copyright © 2020-2023  润新知