1. 簡述資料庫導入OracleSQL*Loader指南
SQL*Loader是Oracle資料庫導入外部數據的一個工具 它和DB 的Load工具相似 但有更多的選擇 它支持變化的載入模式 可選的載入及多表載入
如何使用 SQL*Loader 工具
我們可以用Oracle的sqlldr工具來導入數據 例如:
sqlldr scott/tiger control=loader ctl
控制文件(loader ctl) 將載入一個外部數據文件(含分隔符)loader ctl如下:
load data infile c:datamydata csv into table emp fields terminated by optionally enclosed by ( empno empname sal deptno )
mydata csv 如下:
Scott Tiger Frank Naude
下面是一個指定記錄長度的示例控制文件 * 代表數據文件與此文件同名 即在後面使用BEGINDATA段來標識數據
load data infile * replace into table departments ( dept position ( : ) char( ) deptname position ( : ) char( ) ) begindata COSC PUTER SCIENCE ENGL ENGLISH LITERATURE MATH MATHEMATICS POLY POLITICAL SCIENCE
Unloader這樣的工具
Oracle 沒有提供將數據導出到一個文件的工具 但是 我們可以用SQL*Plus的select 及 format 數據來輸出到一個文件
set echo off newpage space pagesize feed off head off trimspool on spool oradata txt select col || || col || || col from tab where col = XYZ ; spool off
另外 也歷孝可以使用使用 UTL_FILE PL/SQL 包處困虛理:
rem Remember to update initSID ora utl_file_dir= c:oradata parameter declare fp utl_file file_type; begin fp := utl_file fopen( c:oradata tab txt w ); utl_file putf(fp %s %s TextField ); utl_file fclose(fp); end; /
當然你也可以使用第三方工具 如SQLWays TOAD for Quest等
載入可變長度或指定長度的記錄
LOAD DATA INFILE * INTO TABLE load_delimited_data FIELDS TERMINATED BY OPTIONALLY ENCLOSED BY TRAILING NULLCOLS ( data data ) BEGINDATA AAAAAAAAAA A B C D 下面是導入固定位置(固定長度)數據示例 LOAD DATA INFILE * INTO TABLE load_positional_data ( data POSITION( : ) data POSITION( : ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB
跳過汪爛燃數據行 可以用 SKIP n 關鍵字來指定導入時可以跳過多少行數據 如
LOAD DATA INFILE * INTO TABLE load_positional_data SKIP ( data POSITION( : ) data POSITION( : ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB
導入數據時修改數據
在導入數據到資料庫時 可以修改數據 注意 這僅適合於常規導入 並不適合 direct導入方式 如
LOAD DATA INFILE * INTO TABLE modified_data ( rec_no my_db_sequence nextval region CONSTANT time_loaded to_char(SYSDATE HH :MI ) data POSITION( : ) :data / data POSITION( : ) upper(:data ) data POSITION( : ) to_date(:data YYMMDD ) ) BEGINDATA AAAAAAAAAA BBBBBBBBBB LOAD DATA INFILE mail_orders txt BADFILE bad_orders txt APPEND INTO TABLE mailing_list FIELDS TERMINATED BY ( addr city state zipcode mailing_addr decode(:mailing_addr null :addr :mailing_addr) mailing_city decode(:mailing_city null :city :mailing_city) mailing_state )
將數據導入多個表
如:
LOAD DATA INFILE * REPLACE INTO TABLE emp WHEN empno != ( empno POSITION( : ) INTEGER EXTERNAL ename POSITION( : ) CHAR deptno POSITION( : ) CHAR mgr POSITION( : ) INTEGER EXTERNAL ) INTO TABLE proj WHEN projno != ( projno POSITION( : ) INTEGER EXTERNAL empno POSITION( : ) INTEGER EXTERNAL )
導入選定的記錄
如下例 ( ) 代表第一個字元 ( : ) 代表 到 之間的字元:
LOAD DATA INFILE mydata dat BADFILE mydata bad DISCARDFILE mydata dis APPEND INTO TABLE my_selective_table WHEN ( ) <>; H and ( ) <>; T and ( : ) = ( region CONSTANT service_key POSITION( : ) INTEGER EXTERNAL call_b_no POSITION( : ) CHAR )
導入時跳過某些欄位
可用 POSTION(x:y) 來分隔數據在Oracle i中可以通過指定FILLER欄位實現 FILLER 欄位用來跳過 忽略導入數據文件中的欄位 如
LOAD DATA TRUNCATE INTO TABLE T FIELDS TERMINATED BY ( field field FILLER field )
導入多行記錄
可以使用下面兩個選項之一來實現將多行數據導入為一個記錄:
CONCATENATE: use when SQL*Loader should bine the same number of physical records together to form one logical record CONTINUEIF use if a condition indicates that multiple records should be treated as oneEgby having a # character in column
SQL*Loader 數據的提交
一般情況下是在導入數據文件數據後提交的 也可以通過指定 ROWS= 參數來指定每次提交記錄數
提高 SQL*Loader的性能
( ) 一個簡單而容易忽略的問題是 沒有對導入的表使用任何索引和/或約束(主鍵) 如果這樣做 甚至在使用ROWS=參數時 會很明顯降低資料庫導入性能
( ) 可以添加 DIRECT=TRUE來提高導入數據的性能 當然 在很多情況下 不能使用此參數
( ) 通過指定UNRECOVERABLE選項 可以關閉資料庫的日誌 這個選項只能和 direct 一起使用
( ) 可以同時運行多個導入任務
常規導入與direct導入方式的區別
lishixin/Article/program/Oracle/201311/18244
2. sql文件怎麼導入到Oracle資料庫
在sqlplus運行後。
先連接上資料庫
然後使用
@sql文件名.sql
(註:該sql文件,需要在當前目錄下)
如果需要在cmd的批處理的方式下,運行外部SQL文件的話。
可以通過加命令行參數的方式來實現。
test.sql文件內容如下:
createtabletest_sqlplus(
id int,
val varchar(10)
);
INSERTINTOtest_sqlplusVALUES(1,'A');
INSERTINTOtest_sqlplusVALUES(2,'B');
COMMIT;
EXITE:Temp>sqlplustest/test@[email protected]
SQL*Plus:Release9.2.0.1.0-Proctionon星期五4月2612:37:122013
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
連接到:
.2.0.1.0-Proction
表已創建。
已創建1行。
已創建1行。
提交完成。
從.2.0.1.0-Proction中斷開
E:Temp>
3. 怎麼使用plsql中的oracle導入方法導入數據數據
一般導入方法是把備份的dmp文件通過plsql導入到資料庫中。方法如下:
1、登錄要導入的用戶到plsql(一般為新用戶謹正,且有dba等許可權),如果沒有許可權,在system用戶下執行下邊語句:
grant connect,resource,dba to 用戶名;
2、登陸後,依次點擊「工具」-「導入表」
3、上方選擇「oracle導入」,下方根據自己條件勾選必要嘩晌肆的選項,然後點擊文件夾樣式的圖標,選擇自己的dmp文件,選擇好文件以後,點擊「導入」按鈕,等待執行完畢即可亂轎。
4. sql oracle怎麼導入數據
在我們使用SQL Server資料庫的過程中,有時需要將SQL Server數據導出,導入到其他的資料庫中,比如導入到Oracle中。
假設要將SQL Server中的Northwind資料庫中的Procts表導出到Oracle的Scott用戶
團山旅首先需要有安裝SQL Server企業版
1.打開工具:
開始->程序->
導入和SQL Server數據導出數據
2.下一步,選擇數據源
[數據源]選擇「用於SQL Server的Microsoft OLE DB提供程序」,這應該是預設值。
[伺服器]選擇要導出數據的伺服器唯謹,如果是本機,選擇(local)
[資料庫]選擇要導出的數據所在的庫,這里選擇Northwind
3.下一步,選擇目的
[目的]選擇Microsoft ODBC for Oracle
[DSN]選擇用戶/系統DSN一項,然後在下拉列表框中找一個已經連接到了Scott用戶的DSN名稱。
如果下拉列表中沒有,點下拉列表框右側的[新建],出現創建新數據源界面。
接下來選擇系統數據源,下一步,在驅動程序列表中選擇Microsoft ODBC for Oracle
下一步,完成,出現Microsoft ODBC for Oracle安裝界面
[數據源名稱]隨便輸入,比如sss
[說明]可以不填
[用戶名稱]填入要SQL Server數據導出到的Oracle用戶名稱,這里是scott
[伺服器]填入要連接到Oracle伺服器所使用的服務名,比方說使用sqlplus scott/tiger@server1可以連接到資料庫,那麼這里就填入server1。如果本機就是伺服器,使用sqlplus scott/tiger即可連接到資料庫,這里空著不填即可。
這樣就創建好了一個數據源sss,保證下拉列表框中選擇了sss一項。
[用戶名]填入SQL Server數據導出到的Oracle用戶名稱,這里是scott
[密碼]填入SQL Server數據導出到的Oracle用戶使用的密碼,這里是tiger
4.下一步,指定表復制或查詢
如果要導出的內容是整個表,選擇[從源資料庫復製表和視圖]
如果要導出的內容是表的一部分列,行,可以選擇[用一條查詢指定要傳輸的數據],這時需要寫出一個查詢語句
這里選擇第一項[從源資料庫復製表和視圖]
5.下一步,選擇源表和視圖
點中要導出的表Procts一行的復選框,目的、轉換兩欄就會出現內容。
目的可以用來選擇表名。轉換可以用來修改列的數據類型或是整個建表的SQL語句
6.下一步,保存、調度和復制包
選中立即運行
7.下一步,正在完成DTS導入/導出向導
8.完成
提示「成功地將n個表從Microsoft SQLServer復制到了Oracle」
9.完成,關閉導入導出程序
注意:因為oracle的表名都是大寫的,而SQL的表可能是大小混寫的,所以導入後在oracle里查不到該表,比如這個Procts表在oracle里查詢就應該寫成select * from scott."Procts";為了方便查詢可以通過批量修改表名為大寫以便後面導數據的工作。
---導完數據後執行下面語句,生成把表名修改成大寫的操作
select 'ALTER TABLE '||'"'||table_name||'"'||' RENAME TO '|| upper(table_name)||';' from user_tab_comments;
把生成的文件執行即可把此用戶塌凳下的所有表名修改成大寫。
5. oracle怎樣導入資料庫
方法一:利用PL/SQL Developer工具導出:
菜單欄---->Tools---->Export Tables,如下圖,設置相關參數即可:
方法二:利用cmd的操作命令導出,詳情如下:
1:G:\Oracle\proct\10.1.0\Client_1\NETWORK\ADMIN目錄下有個tnsname.ora文件,內容如下:
復制代碼 代碼如下:
CMSTAR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.13.200)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cmstar)
)
)
其中:CMSTAR為資料庫名,HOST為IP地址,所以可以仿效上面的例子手動添加數據錄連接。
2:用cmd進入命令行
輸入:tnsping cmstar
就是測試172.18.13.200是否連接成功
3:導入與導出,如下:
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:\chu.dmp中
exp system/manager@TEST file=d:\chu.dmp full=y
2將資料庫中system用戶與sys用戶的表導出
expsystem/manager@TESTfile=d:\chu.dmpowner=(system,sys)
3將資料庫中的表table1、table2導出
expsystem/manager@TESTfile=d:\chu.dmptables=(table1,table2)
4將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
expsystem/manager@TESTfile=d:\chu.dmptables=(table1)query=\"wherefiled1like'00%'\"
上面是常用的導出,對於壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
不過在上面命令後面加上compress=y就可以了
數據的導入
1將D:\chu.dmp中的數據導入TEST資料庫中。
impsystem/manager@TESTfile=d:\chu.dmp
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上ignore=y就可以了。
2將d:\chu.dmp中的表table1導入
impsystem/manager@TESTfile=d:\chu.dmptables=(table1)
注意事項:導出dmp數據時需要有導出表的許可權的用戶,否則不能導出。
PL/SQL Developer是Oracle資料庫中用於導入或導出資料庫的主要工具,本文主要介紹了利用PL/SQL Developer導入和導出資料庫的過程,並對導入或導出時的一些注意事項進行了說明,接下來我們就一一介紹。
導出步驟:
1 tools ->export user object 選擇選項,導出.sql文件。
2 tools ->export tables-> Oracle Export 選擇選項導出.dmp文件。
導入步驟:
註:導入之前最好把以前的表刪除,當然導入另外資料庫除外。
1 tools->import tables->SQL Inserts 導入.sql文件。
2 tools->import talbes->Oracle Import然後再導入dmp文件。
一些說明:
Tools->Export User Objects導出的是建表語句(包括存儲結構)。
Tools->Export Tables裡麵包含三種導出方式,三種方式都能導出表結構以及數據,如下:
Oracle Export
Sql Insert
pl/sql developer
第一種是導出為.dmp的文件格式,.dmp文件是二進制的,可以跨平台,還能包含許可權,效率也很不錯,用得最廣 。
第二種是導出為.sql文件的,可用文本編輯器查看,通用性比較好,但效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大欄位(blob,clob,long),如果有,會提示不能導出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)。
第三種是導出為.pde格式的,.pde為Pl/sql developer自有的文件格式,只能用Pl/sql developer自己導入導出,不能用編輯器查看。
6. 如何用plsql從oracle中導入導出數據
用pl/sql developer導出表的數據時有三種方式:Oracle Export,Sql Insert,pl/sqldeveloper
只有「Oracle Export」方式導出再導入後,表結構和索引結構沒有發生變化,另兩種方式都改變了索引掘賣類型。另外判握逗
Sql Insert的那個可以導成sql,可以用文本編輯器打開。
pl/sql developer 也可以導出,但文本編輯器不能打開。
區別:
Oracle Export,Sql Insert,pl/sql developer
第一種是導出為.dmp的文件格式,.dmp文件是二進制的,可以跨平台,還能包含許可權,效率也很不錯,用得最廣
第二種是導出為.sql文件的,可用文本編輯器查看,通用性比較好,但效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大欄位(blob,clob,long),如果有,會提示不能導出(提示如下:
table contains one or more LONG columns cannot export in sql format,user Pl/sqldeveloper format instead),可以用第一種和第三種方式導出。
第三種皮羨是導出為.pde格式的,.pde為Pl/sql developer自有的文件格式,只能用Pl/sql developer自己導入導出;不能用編輯器查看,
導出數據到excel文件:
選中數據表--query data--選中要導出的數據--右鍵 to excel
excel數據導入到資料庫:
1.在Excel中准備好要導入的數據。具體操作:在Excel中,把第一列設置為空列,第二列以後的列應與要導入的數據表的欄位相對應。
2.登錄PLSQL Developer,找到需要導入數據的資料庫表後,點擊右鍵--edit data,進入了編輯此表的數據對話框,並點擊最左側選中一空行。
3. Excel表中的數據記錄,將數據粘貼到上步中PLSQL Developer顯示的表列中。
4.點擊PLSQL Developer中的對號按鈕進行Post。
7. oracle怎麼導入sql文件
PL/SQL登錄到資料庫,使用tools工具進行導入。使用plsql登錄到需要導入數據的資料庫。點擊工具欄上【tools】--【Import tables】
8. 如何將SQL數據導入ORACLE資料庫中
然後 , 打開PL/SQL 上方Tools——Text Importer——open datafile(左上角)——選擇你的CSV表,打開 記得,勾選左側Name In Header,選擇到Data To Oracle,在這里選擇你要導入到ORACLE里的表和這張表的OWNER,在右側選擇相應欄位,如果對應的上,下面的Import就會亮,好了,每一列挨個點。 注意點:欄位類型別搞錯了。 增長值必須改為序列,時間類型,必須設定默認值,字元中設為『』,因為從SQL中出來的CSV文件,空值都為NULL,相對應在ORACLE會存為NULL,而字元類型的 NULL,頁面讀取時會顯帆判寬示NULL。 所謂沖仿「CSV」,是Comma Separated Value(逗號分隔值)的英文縮寫,通常都是純文本文件。下面是一個實際CSV文件中的部分內容,讓大家對他有一個感性的認識。我們選的是Sjojo_Rescan 的CSV文件(Sjojo是ASW-亞洲掃圖風的成員之一)。 sj_mino1001.jpg,715282,4FB55FE8, sj_mino1002.jpg,471289,93203C5C, sj_mino1003.jpg,451929,C4E80467, 通常CSV文件開頭是不留空的,以行為單位,每行中記錄態亮一張圖片的了多項數據,每項數據用逗號 來分隔(標准英文逗號)。一般說來集圖用的.CSV文件的格式是這樣的:
9. oracle sqldeveloper 如何從資料庫導入/導出數據
PLSQL中還有一個導入表的功能;選擇第二個頁簽:SQL插入;在下面的導入文件建議使用POWERDESIGNER之類的帶有資料庫逆向工程的資料庫設計軟體來做這樣的事