• sqlldr


    由于最近做一个项目 考虑到插入数据库效率的问题, 需要将 .csv格式的文本文件导入到 oracle数据库当中 。

     1 首先导入 oracle 的方法有很多 , 对于不同需求有不同的导入方式 , 我在这里就说一下  sqlldr 的方法 。  使用sqlldr 将文本文件导入 oracle中确切说只需要两步 。

     第一步:  写一个 ctl  格式的控制文件

          CTL 控制文件的内容 :  (我会写一个模板和一个样例)

      1) insert     --为缺省方式,在数据装载开始时要求表为空
      2) append  --在表中追加新记录
      3) replace  --删除旧记录(用 delete from table 语句),替换成新装载的记录
      4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录

              模板 :

                     load data   --    1. 控制文件标识

                     infile 'xxx.csv'      --  2. 要导入的数据文件名  linuk系统路径:/.../...     windows系统路径:D:/....

                     insert  into  table   test   --  3.  将文件插入到数据库的 test 表中

                     fields terminated by ',' --  4.  用于分割一行中各个属性值的符号(例如每个属性值用逗号 分割 ,  ‘ ,’)

                     optionally enclosed by '"' --5 很多数据源的字段开始和结束都是带双引号的,这里是无视这些双引号,如果不写 optionally enclosed by '"'那么带有双引号的数据会插入到数据库表中

                     (id  , username ,passwprd ,......)    -- 6.  test表中对应的属性名

    2,在 cmd 命令窗口中写入导入语句     


    用法: 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 (默认 NOT_USED)
    columnarrayrows -- 直接路径列数组的行数 (默认 5000)
    streamsize -- 直接路径流缓冲区的大小 (以字节计) (默认 256000)
    multithreading -- 在直接路径中使用多线程
    resumable -- 启用或禁用当前的可恢复会话 (默认 FALSE)
    resumable_name -- 有助于标识可恢复语句的文本字符串
    resumable_timeout -- RESUMABLE 的等待时间 (以秒计) (默认 7200)
    date_cache -- 日期转换高速缓存的大小 (以条目计) (默认 1000)

     ->  sqlldr  userid = 用户名 / 密码 @ 数据库名    control = 之前写的ctl控制文件的地址     bad = E:/ bad.bad    log = E:/log.log   skip=1  rows=1000     errors=10000  direct=y

    作者:郑金圣
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    2.13 day 10
    2.12 day9
    Mongo基础知识
    给mongodb设置密码
    前端框架
    SecureCRT的一些设置
    node 服务器框架
    python 知识博客
    数据库记录
    有用的网站
  • 原文地址:https://www.cnblogs.com/zhengjinsheng/p/10956430.html
Copyright © 2020-2023  润新知