zoukankan      html  css  js  c++  java
  • toad for oracle 小技巧

    在SQL*LOADER 工具上(或者称为SQLLDR,读为:“sequel loader”),因为它仍然是装载数据的主要方法,SQLLDR 能够在极短的时间内装

    载庞大数量的数据。

    我也是初使用,理解不太深刻,所以做下简单的介绍希望能帮助大家。

    sqlldr 帮助命令参考:

    Microsoft Windows [版本 10.0.16299.726]
    (c) 2017 Microsoft Corporation。保留所有权利。
    
    C:Users
    antian>sqlldr
    
    SQL*Loader: Release 12.2.0.1.0 - Production on 星期二 11月 6 15:46:09 2018
    
    Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
    
    
    用法: SQLLDR keyword=value [,keyword=value,...]
    
    有效的关键字:
    
        userid -- ORACLE 用户名/口令
       control -- 控制文件名
           log -- 日志文件名
           bad -- 错误文件名
          data -- 数据文件名
       discard -- 废弃文件名
    discardmax -- 允许废弃的文件的数目         (全部默认)
          skip -- 要跳过的逻辑记录的数目  (默认 0)
          load -- 要加载的逻辑记录的数目  (全部默认)
        errors -- 允许的错误的数目         (默认 50)
          rows -- 常规路径绑定数组中或直接路径保存数据间的行数
                   (默认: 常规路径 64, 所有直接路径)
      bindsize -- 常规路径绑定数组的大小 (以字节计)  (默认 256000)
        silent -- 运行过程中隐藏消息 (标题,反馈,错误,废弃,分区)
        direct -- 使用直接路径                     (默认 FALSE)
       parfile -- 参数文件: 包含参数说明的文件的名称
      parallel -- 执行并行加载                    (默认 FALSE)
          file -- 要从以下对象中分配区的文件
    skip_unusable_indexes -- 不允许/允许使用无用的索引或索引分区  (默认 FALSE)
    skip_index_maintenance -- 没有维护索引, 将受到影响的索引标记为无用  (默认 FALSE)
    commit_discontinued -- 提交加载中断时已加载的行  (默认 FALSE)
      readsize -- 读取缓冲区的大小               (默认 1048576)
    external_table -- 使用外部表进行加载; NOT_USED, GENERATE_ONLY, EXECUTE
    columnarrayrows -- 直接路径列数组的行数  (默认 5000)
    streamsize -- 直接路径流缓冲区的大小 (以字节计)  (默认 256000)
    multithreading -- 在直接路径中使用多线程
     resumable -- 对当前会话启用或禁用可恢复  (默认 FALSE)
    resumable_name -- 有助于标识可恢复语句的文本字符串
    resumable_timeout -- RESUMABLE 的等待时间 (以秒计)  (默认 7200)
    date_cache -- 日期转换高速缓存的大小 (以条目计)  (默认 1000)
    no_index_errors -- 出现任何索引错误时中止加载  (默认 FALSE)
    partition_memory -- 开始溢出的直接路径分区内存限制 (kb)  (默认 0)
         table -- 用于快速模式加载的表
    date_format -- 用于快速模式加载的日期格式
    timestamp_format -- 用于快速模式加载的时间戳格式
    terminated_by -- 由用于快速模式加载的字符终止
    enclosed_by -- 由用于快速模式加载的字符封闭
    optionally_enclosed_by -- (可选) 由用于快速模式加载的字符封闭
    characterset -- 用于快速模式加载的字符集
    degree_of_parallelism -- 用于快速模式加载和外部表加载的并行度
          trim -- 用于快速模式加载和外部表加载的截取类型
           csv -- 用于快速模式加载的 csv 格式数据文件
        nullif -- 用于快速模式加载的表级 nullif 子句
    field_names -- 用于快速模式加载的数据文件第一条记录字段名设置
    dnfs_enable -- 启用或禁用输入数据文件 Direct NFS (dNFS) 的选项  (默认 FALSE)
    dnfs_readbuffers -- Direct NFS (dNFS) 读缓冲区数  (默认 4)
    sdf_prefix -- 要附加到每个 LOB 文件和辅助数据文件的开头的前缀
          help -- 显示帮助消息  (默认 FALSE)
    empty_lobs_are_null -- 将空白 LOB 设置为空值  (默认 FALSE)
      defaults -- 直接路径默认值加载; EVALUATE_ONCE, EVALUATE_EVERY_ROW, IGNORE, IGNORE_UNSUPPORTED_EVALUATE_ONCE, IGNORE_UNSUPPORTED_EVALUATE_EVERY_ROW
    direct_path_lock_wait -- 当前已锁定时, 等待表访问权限  (默认 FALSE)
    
    PLEASE NOTE: 命令行参数可以由位置或关键字指定
    。前者的例子是 'sqlldr
    scott/tiger foo'; 后一种情况的一个示例是 'sqlldr control=foo
    userid=scott/tiger'。位置指定参数的时间必须早于
    但不可迟于由关键字指定的参数。例如,
    允许 'sqlldr scott/tiger control=foo logfile=log', 但是
    不允许 'sqlldr scott/tiger control=foo log', 即使
    参数 'log' 的位置正确。
    
    C:Users
    antian>

    sqlldr 官方参考链接

    https://docs.oracle.com/en/database/oracle/oracle-database/18/sutil/oracle-sql-loader-express-mode.html#GUID-8C235861-2A8B-4196-9705-E6FFED0C0C99

    sqlldr脚本如何写,小技巧可使用toad for  oracle  导出sqlpldr 格式的文件,然后执行导入操作,首先我们使用子查询创建一张测试表示例如下:

    建表语句如下

    CREATE TABLE U_TAB  
    AS 
    SELECT  USERNAME ,USER_ID , ACCOUNT_STATUS,
    DEFAULT_TABLESPACE ,TEMPORARY_TABLESPACE   
    FROM DBA_USERS   WHERE ACCOUNT_STATUS='OPEN';

     然后鼠标右键查询的数据集上,选择Export Dataset 

    我们选择保存在桌面,点击ok .

    打开导出文件U_TAB.ctl 如下:

    -- SQL Loader Control and Data File created by TOAD
    -- Variable length, terminated enclosed data formatting
    -- 
    -- The format for executing this file with SQL Loader is:
    -- SQLLDR control=<filename> Be sure to substitute your
    -- version of SQL LOADER and the filename for this file.
    --
    -- Note: Nested table datatypes are not supported here and
    --       will be exported as nulls.
    OPTIONS (DIRECT=FALSE, PARALLEL=FALSE)
    LOAD DATA
    INFILE *
    BADFILE './U_TAB.BAD'
    DISCARDFILE './U_TAB.DSC'
    APPEND INTO TABLE WX.U_TAB
    Fields terminated by ";" Optionally enclosed by '"'
    (
      USERNAME,
      USER_ID NULLIF (USER_ID="NULL"),
      ACCOUNT_STATUS,
      DEFAULT_TABLESPACE,
      TEMPORARY_TABLESPACE
    )
    BEGINDATA
    "SYS";0;"OPEN";"SYSTEM";"TEMP"
    "SYSTEM";9;"OPEN";"SYSTEM";"TEMP"
    "WX";111;"OPEN";"USERS";"TEMP"
    "ZHJF";109;"OPEN";"MCC";"MCC_TEMP"

    ,进入sqlplus  ,我们把表清空,然后使用sqlpldr 把表重新装在

    C:Users
    antian>sqlplus wx/123
    
    SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 6 16:24:35 2018
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    上次成功登录时间: 星期二 11月 06 2018 16:24:30 +08:00
    
    连接到:
    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
    
    SQL> TRUNCATE TABLE U_TAB;
    
    表被截断。
    
    SQL> ho sqlldr wx/123 control=C:Users
    antianDesktopU_TAB.ctl
    
    SQL*Loader: Release 12.2.0.1.0 - Production on 星期二 11月 6 16:24:54 2018
    
    Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
    
    所用路径:       常规
    达到提交点 - 逻辑记录计数 4
    
    表 WX.U_TAB:
      已成功载入 4 行。
    
    查看日志文件:
      U_TAB.log
    了解有关加载的详细信息。
    SQL> set lines 200
    SQL> column username format a20
    SQL> SELECT * FROM   U_TAB ;
    
    USERNAME                USER_ID ACCOUNT_STATUS                   DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
    -------------------- ---------- -------------------------------- ------------------------------ ------------------------------
    SYS                           0 OPEN                             SYSTEM                         TEMP
    SYSTEM                        9 OPEN                             SYSTEM                         TEMP
    WX                          111 OPEN                             USERS                          TEMP
    ZHJF                        109 OPEN                             MCC                            MCC_TEMP
    
    SQL>

     表数据已导入

    使用这个工具可以免去写sqlldr控制文件的语法,控制文件是必须的,但数据文件的数据可以和控制文件一同写入。

  • 相关阅读:
    leetcode Majority Element
    Missing Number 三种解法
    Effective C++学习笔记 chapter 1
    C++ 笔记
    三色排序
    归并排序-就地排序
    506,display有哪些值?说明他们的作用
    505,display,float,position之间的关系(有疑问)
    504,什么是FOUC?怎么避免
    503,display:none;与visibility:hidden;的区别
  • 原文地址:https://www.cnblogs.com/wenxiao1-2-3-4/p/9916133.html
Copyright © 2011-2022 走看看