zoukankan      html  css  js  c++  java
  • 使用ctl将txt或csv文件导入表数据

    使用ctl将txt导入表数据

    1.先用sh导出txt源数据;

    2.写一份ctl文档;

    3.最后用sqlldr命令根据ctl文档的字段配置将txt源数据导入到目标表;

    步骤1范例,生成TMP_HELPER_ACCOUNT.txt文档

    #!/bin/sh

    sqlplus -S ha/ha2017@fdb >TMP_HELPER_ACCOUNT.txt<< EOF

    set heading off                                            

    set pagesize 0;                                            

    set feedback off;                                          

    set verify off;                                            

    set echo off;                                              

    SET LINESIZE 6000;                                                                                                     

    select user_id ||'$'||helper_id ||'$'||helper_name ||'$'||is_secretary ||'$'||is_residency from TMP_HELPER_ACCOUNT ;                                    

    exit;

    EOF

    echo '666'

    步骤2范例,创建TMP_HELPER_ACCOUNT.ctl文档

    load data

    append into table TMP_HELPER_ACCOUNT

    fields terminated by '$'

    OPTIONALLY ENCLOSED BY '"'

    TRAILING NULLCOLS (user_id

    ,helper_id

    ,helper_name

    ,is_secretary

    ,is_residency )

    步骤3范例,(TMP_HELPER_ACCOUNT.txt和TMP_HELPER_ACCOUNT.ctl要上传到同一目录 )

    执行 sqlldr userid=ha/ha2018@fdb2018 control=TMP_HELPER_ACCOUNT.ctl data=TMP_HELPER_ACCOUNT.txt  rows=100000 errors=100000 direct=true;

    -----------------------------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------------------------------

    使用ctl将csv导入本地的表


    (先excel文件另存为csv文件(这份csv不知道编码),再ue新建一个文件,设置为utf-8文件(高级-配置-编辑器-编码类型:选中 新建UTF-8 编码文件),再把当时另存为的csv的数据复制到这份utf-8文件中,文件命名testimp-utf-8.csv)
    1.本地: 使用WCP 把 testimp-utf-8.csv 和 testimp.ctl 放到 /home/pap_etl/etl_bas/pap_shell 目录。

    2.执行本地终端 ,设置字符集为utf-8。(Terminal -> Appearance-> Character encoding: 选择UTF-8 )
    测试机Linux配置:10.9.13.87
     pap_etl/CEik46oYh49T2HM$
    shell目录 /home/pap_etl/etl_bas/pap_shell

    3.执行以下命令

    sqlldr userid=hainan/hainan2017@fpydb control=/home/pap_etl/etl_bas/pap_shell/testimp.ctl ;

    #sqlldr userid=hainan/hainan2017@fpydb control=testimp.ctl ; 这种绝对路径也是可以的


    ---这样就导入到本地的 t_imp_stu1表,可以比较了

    ctl范例:指定某个csv文件 infile可用绝对路径和相对路径

    load data
    infile '/home/pap_etl/etl_bas/pap_shell/testimp-utf-8.csv'

    append into table t_imp_stu1

    fields terminated by ','

    OPTIONALLY ENCLOSED BY '"'

    TRAILING NULLCOLS (id
    ,name
    ,id_card
    ,xueji
    ,jiuxue_status
    ,zaidu_school
    ,zaidu_xueduan
    ,is_shouzhu
    ,file_name )

    -----------------------------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------------------------------

    /*
    ----查看用户登录时自动加载的用户配置文件 里面可以看到编码格式如 export LANG=zh_cn.UTF-8
    cat .bash_profile

    ----让上面的设置生效
    source .bash_profile

    ----csv文件也utf-8编码,再用ctl导入数据库,中文就不会出现类似?的乱码了。

    */

  • 相关阅读:
    css选择器解析规则
    swiper轮播图包含视频或图片
    css实现文字选中变色
    swiper鼠标滚轮事件
    C语言中,关于相除的问题
    输入测试字符型数据的组数,再输入字符型数据,排坑
    C语言中,字符型数字与常数型数字的加减实现
    C语言的指针用法:输入一堆字符,把非字母的删去。
    C语言中倒序输出你输入的数。
    C语言中,嵌套的if语句的一些经验...
  • 原文地址:https://www.cnblogs.com/jiangqingfeng/p/8631310.html
Copyright © 2011-2022 走看看