<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    程序人生

    記錄編程中的點點滴滴

    Oracle sqllder 數據導入

    操作環境

    客戶端 Oracle 10g

    服務端 Oracle 11g

    1、數據準備

    1.1、在sqlplus下將相關表將相關待導入數據導出為txt文件

    --sqlplus腳本
    Set linesize 3000    --每行長3000
    Set pagesize 0       --指定不分頁
    Set heading off      --不輸出標題行
    Set feedback off     --不輸出反饋信息
    Set echo off         --不顯示命令本身
    Set termout off      --不顯示終端信息
    Set trimout On       --截斷終端顯示空格
    Set trimspool On     --截斷輸出至日志空格
    spool c:\a.txt       --指定屏幕輸出到相關文件
    spool off            --關閉指定輸出

    以上腳本控制sqlplus控制臺輸出打印效果, 同時指定屏幕的打印輸出將轉錄入到何文件中

    實際腳本

    sqlplus zhsj/zhsj@zhsj
    Set linesize 3000   
    Set pagesize 0      
    Set heading off     
    Set feedback off    
    Set echo off        
    Set termout off     
    Set trimout On      
    Set trimspool On    
    spool c:\a.txt      
    select employee_id||'|'||employee_name||'|'||employee_salary from t_employee;
    spool off           

    以上會將t_employee表中的 employee_id、employee_name、employee_salary 三列數據以如下形式寫入c:\a.txt 文件中

    1|znp|80000.00
    2|zhsj|40000.00
    3|xxx|30000.00

    數據準備完成后編寫sqlldr要用到的ctl文件,用于將txt文件中的數據導入到數據庫中,腳本如下 (--部分實際腳本中須刪險)

    -- a.ctl
    Load data   --加載數據
    infile a.txt    --加載數據文件名稱(現在是相對路徑,可以寫成絕對路徑c:\bak.txt)
    badfile a.bad                   --失敗數據寫入文件
    append                     -- append 追加  truncate truncate delete 刪除
    into table t_employee_bak    --插入操作表
    FIELDS TERMINATED BY '|'                 --根據指定標識符隔斷各字段值 OPTIONALLY ENCLOSED BY '"'  過濾掉指定的標識符,如"等
    (employee_id,                                 --指定插入字段及數據
    employee_name,
    employee_salary)

    準備完成后,在cmd下輸入

    sqlldr -userid zhsj/zhsj@zhsj control=c:\a.ctl  

    執行,在t_employee_bak表中可以見到a.txt中的數據已導入

    在執行過程如果出現數據沒有導入的情況,可能原因會有以下幾種情況

    1、在導出的數據文件中存在同時打印輸出的命令行,將命令行刪除后重新保存文件即可將數據正常插入到數據庫中
    2、雖然文本中已是正確的數據但仍然無法導入,此時在執行的SQL腳本中增加一個間隔符的輸出,即

    select employee_id||'|'||employee_name||'|'||employee_salary from t_employee;

    改為

    select employee_id||'|'||employee_name||'|'||employee_salary||'|' from t_employee;

    此時將會正常導入,這是因為列值存在空數據導致間隔計算問題

    以上為txt格式數據文件導出

    對于異質數據庫,可以采用sqldeveloper等工具將相關數據庫中數據以csv格式導出,此時在編寫執行腳本時須變更如下

    -- a.ctl
    Load data   --加載數據
    infile a.txt    --加載數據文件名稱(現在是相對路徑,可以寫成絕對路徑c:\bak.txt)
    badfile a.bad                   --失敗數據寫入文件
    append                           -- append 追加  truncate truncate delete 刪除
    into table t_employee_bak    --插入操作表
    FIELDS TERMINATED BY ','   OPTIONALLY ENCLOSED BY '"'   --根據指定標識符隔斷各字段值 OPTIONALLY ENCLOSED BY '"'  過濾掉指定的標識符,如"等
    (employee_id,                                 --指定插入字段及數據
    employee_name,
    employee_salary)

    因為csv格式文件在用txt打開可以看到數據文件格式為"1","znp","80000.00",需要將' " '標識符去掉,才可以正常導入

    大數據量時csv格式文件會比txt格式文件大3倍左右,且導入時可能出現問題,所以盡量采用txt文件方式導入



    posted on 2010-12-24 09:49 zhaonp 閱讀(1336) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成色WWW久久网站| 激情内射亚洲一区二区三区爱妻| 午夜精品免费在线观看| 亚洲午夜精品国产电影在线观看| 四色在线精品免费观看| 国产人成网在线播放VA免费| 亚洲一区二区影院| 永久黄网站色视频免费观看| 在线观看免费视频一区| 亚洲乱亚洲乱妇无码| 亚洲精品乱码久久久久久久久久久久 | 亚洲国产人成中文幕一级二级| 日本在线免费观看| 亚洲va中文字幕| 亚洲91av视频| 亚洲成A人片在线观看中文| 2019中文字幕免费电影在线播放 | 91亚洲视频在线观看| 亚洲成aⅴ人片久青草影院| 日韩精品内射视频免费观看| 亚洲.国产.欧美一区二区三区| 亚洲国产另类久久久精品黑人| 99视频在线精品免费观看6| 黄视频在线观看免费| 亚洲日本久久久午夜精品| 亚洲av无码国产精品色午夜字幕| 麻豆国产精品入口免费观看| 亚洲精品免费观看| 人禽伦免费交视频播放| 亚洲精品无码久久久久APP| 亚洲一本综合久久| 亚洲精品无码久久久久AV麻豆| 在线看片v免费观看视频777| 国产中文字幕在线免费观看| 国产亚洲福利一区二区免费看| 亚洲国产精品久久丫| 亚洲Av无码精品色午夜| 亚洲一级特黄大片无码毛片| 日本免费人成黄页在线观看视频| 亚洲免费观看网站| 久久亚洲免费视频|