Energy of Love  
          日歷
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567
          統計
          • 隨筆 - 70
          • 文章 - 0
          • 評論 - 80
          • 引用 - 0

          導航

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          將excel數據導入oracle中

          http://www.douzhe.com/docs/bbsjh/8/3383.html 這個帖子的討論,整理如下:

          A、有一個比較麻煩但保證成功的方法。
          1、在本地創建一個Access數據庫,將Excel數據先導入到Access。可直接導入點擊鼠標右鍵,選擇導入,文件類型選擇要導入的Excel文件,也可通過創建宏用TransferSpreadsheet函數實現。
          2、在本地創建ODBC,鏈接oracle數據庫。將oracle中需要導入數據的表以鏈接表的方式在本地Access中創建(千萬不要使用導入表)。
          3、在Access數據庫中創建插入查詢將導入好的Excel數據導入到oracle中。

          此方法保證成功。

          B、也可以導入sql server 用它的導出工具導入oracle 但對一些image字段支持不好,你如果
          沒這種字段就行。

          用MS_sqlserver 提供的數據導出導入功能可以方便的把excel方便的導入oracle數據庫

          C、一種方法:
          先把Excel另存為.csv格式文件,如test.csv,再編寫一個insert.ctl
          用sqlldr進行導入!
          insert.ctl內容如下:
          load data                    --1、控制文件標識
          infile 'test.csv'                --2、要輸入的數據文件名為test.csv
          append into table table_name       --3、向表table_name中追加記錄
          fields terminated by ','             --4、字段終止于',',是一個逗號
          (field1,
          field2,
          field3,
          ...
          fieldn)-----定義列對應順序

          注意括號中field排列順序要與csv文件中相對應
          然后就可以執行如下命令:
          sqlldr user/password control=insert.ctl

          有關SQLLDR的問題

          控制文件:input.ctl,內容如下:
            load data           --1、控制文件標識
            infile 'test.txt'       --2、要輸入的數據文件名為test.txt
            append into table test    --3、向表test中追加記錄
            fields terminated by X'09'  --4、字段終止于X'09',是一個制表符(TAB)
            (id,username,password,sj)   -----定義列對應順序

          其中append為數據裝載方式,還有其他選項:
          a、insert,為缺省方式,在數據裝載開始時要求表為空
          b、append,在表中追加新記錄
          c、replace,刪除舊記錄,替換成新裝載的記錄
          d、truncate,同上

          問題:SQLLDR能不能保留表中原有的數據,如果發現KEY重復時,再UPDATE對應的記錄?

          D、先?EXCEL文件??成TXT文件
          再使用SQLLOADER

          E、將EXCEL文件保存成*.csv格式. 然后用sqlload來導入表中.

          sqlload是Oracle自帶的數據倒入工具,應該是沒有可視化工具的(至少我一直用命令行)。
          直接在命令行下敲入sqlldr即可得到幫助。

          F、如果你的單個文件不大的情況下(少于100000行), 可以全選COPY ,然后用PL/SQL.:
          select * from table for update. 然后打開鎖, 再按一下加號. 鼠標點到第一個空格然后粘貼. COMMIT即可.(小竅門, ORACLE不支持的, 但很好用, 不會有問題)

          G、Golden的imp/exp工具可以直接導入文本文件,非常簡單

          下面這個不知道是針對以上哪種方法的:
                放心:excel文件最多只有65536條記錄
                不放心:曾經如此導過,但當有中文字段時可能出現異常(PL/SQL DEV5)

          我用的是A,OK,時間倉促,其他的沒有試過。

          http://www.itpub.net/101803.html 這個帖子如是說:

          你用的方法可能是:
          1. 存成txt文件, 再用sql*loader
          2. 存成txt文件, 再用第三方工具(如pb, delphi, toad, pl/sql dev等)導入.

          sql*loader用起來費勁, 為了小小的需求, 裝一個第三方工具麻煩.
          看看我的方法.

          比如文件中有id, name兩列(分別為A列和B列), 要導入的表為person(person_id, person_name)

          在excel 文件的sheet的最右列, 添加一列, 對應第一行數據的單元格寫入以下內容:

          = "INSERT INTO PERSON(PERSON_ID, PERSON_NAME) VALUES('" & A1 & "', '" & B1 & "');"

          然后把這一行復制到所有數據行對應的列中.

          這一列的內容拷貝出去保存, 即成為可以直接在sql*plus下運行的腳本.

          方法一?日期型?位不適用

          A、把Excel文件導到Acess里,然后打開要導數據的表。

          打開 PLSQL DEV,打開一個SQL窗口,執行
          select * from [tab] for update

          然后一列一列的從Acess里copy & paste 。

          B、excel->copy->pl/sql developer>paste

          實際操作時發現,使用 copy / paste 經常會發生莫其妙的問題。尤其是通過 access ( ODBC) copy 入 oracle 時。

          EXECL -->SAVE AS *.CSV(COMMA DELIMITED). THEN LOAD IT DIRECTLY.


          CTL FILE EXAMPLE
          ------------
          Load Data
          INFILE 'E:\AA.csv'
          TRUNCATE
          INTO TABLE AA
          FIELDS TERMINATED BY ','
          (A,
          B)

          C、在ACCESS中將ORACLE TABLE 映射,然后直接插入即可。很方便,也沒發現有數據錯誤問題。
          曾經有一個很麻煩的LONG RAW問題,用這個辦法也解決了

          D、用SQL*XL就可以直接將EXCEL文件導入ORACLE,很方便的,我一直用SQL*XL。

          E、我常用的辦法是從excel中copy到ultraEdit中,然后用列編輯功能加上insert into ....等等,也挺好用

          F、用plsql developer,很好用的,直接copy就可以了

          在pl/sql developer 中選擇表的多個字段名,然后就可以paste 了

          G、用odbc加pb的數據管道可以在不同的數據庫(文本)之間傳輸數據

          H、odbc+pb

          用不同的odbc驅動程序連接不通的數據庫
          然后在pb環境中啟動數據管道,利用數據管道傳輸數據

          I、先倒成。DBF的文件,再用DELPHI DATABASE DESKTOP 導入ORACLE很方便的,也且也可以支持空值導入。

          http://www.itpub.net/showthread.php?s=7f7b57ea130ab71a3fdad57a71d8f8a1&threadid=97652&perpage=15&pagenumber=2

          帖子很長,有空再整理。

          posted on 2009-10-22 14:25 不高興 閱讀(2928) 評論(0)  編輯  收藏 所屬分類: Oracle
           
          Copyright © 不高興 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 恩平市| 哈密市| 沾益县| 湖南省| 保山市| 民县| 静乐县| 齐河县| 凤山县| 秦安县| 岳阳市| 信宜市| 阿勒泰市| 蛟河市| 界首市| 瑞安市| 原阳县| 牙克石市| 长汀县| 陈巴尔虎旗| 青阳县| 古交市| 右玉县| 渝北区| 富锦市| 灯塔市| 安康市| 柳江县| 神农架林区| 军事| 麟游县| 荆州市| 新巴尔虎左旗| 镇宁| 肇庆市| 资中县| 黔南| 凤山市| 金湖县| 筠连县| 罗甸县|