當前位置:首頁 » 數據倉庫 » oracle資料庫導出語句

oracle資料庫導出語句

發布時間: 2022-11-30 07:55:41

㈠ oracle資料庫怎麼導出資料庫sql語句

首先你安裝一個工具:plsql-developer
安裝完後再在裝一個:漢化包(如果你英語夠強的話就不用了)
然後跟用oracle的賬號密碼登陸developer
進去後,選中1.資料庫名2.選中要導出的表3.點擊右鍵,4.導出資料庫腳本(可選表結構和數據)~~~具體的你可以看看plsql-developer怎麼使用。大概一天不到就可以學會了!呵呵

㈡ oracle怎麼導出數據

Oracle導出導出有兩中方式:一、利用exp imp導出導入;二、利用Oracel數據泵expdp impdp導出導入。
一、利用exp imp導出導入
exp imp 語法如下:
exp:
1) 將資料庫orcl完全導出
exp system/[email protected] file=d:\orcl_bak.dmp full=y
2) 將資料庫中system用戶的表導出
exp system/[email protected] file=d:\system_bak.dmp owner=system
3) 將資料庫中表table1,table2導出
exp system/[email protected] file=d:\table_bak.dmp tables=(table1,table2)
4) 將資料庫中的表customer中的欄位mobile以"139"開頭的數據導出
exp system/[email protected] file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 將備份文件bak.dmp導出資料庫
imp system/[email protected] file=d:\bak.dmp
如果數據表中表已經存在,會提示錯誤,在後面加上ignore=y就可以了。
2) 將備份文件bak.dmp中的表table1導入
imp system/[email protected] file=d:\bak.dmp tables=(table1)
exp imp導出導入數據方式的好處是只要你本地安裝了Oracle客戶端,你就可以將伺服器中的數據導出到你本地計算機。同樣也可以將dmp文件從你本地導入到伺服器資料庫中。但是這種方式在Oracle11g版本中會出現一個問題:不能導出空表。Oracle11g新增了一個參數deferred_segment_creation,含義是段延遲創建,默認是true。當你新建了一張表,並且沒用向其中插入數據時,這個表不會立即分配segment。
解決辦法:
1、設置deferred_segment_creation參數為false後,無論是空表,還是非空表,都分配segment。
在sqlplus中,執行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設置後,只對後面新增的表起作用,對之前建立的空表不起作用,並且注意要重啟資料庫讓參數生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以為資料庫對象分配Extent,語法如下:
alter table table_name allocate extent
構建對空表分配空間的SQL命令:

SQL>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的語句。
然後執行這些修改語句,對所有空表分配空間。
此時用exp命令,可將包括空表在內的所有表導出。

二、利用expdp impdp導出導入
在Oracle10g中exp imp被重新設計為Oracle Data Pump(保留了原有的 exp imp工具)

數據泵與傳統導出導入的區別;
1) exp和imp是客戶端工具,他們既可以在客戶端使用,也可以在服務端使用。
2) expdp和impdp是服務端工具,只能在Oracle服務端使用。
3) imp只適用於exp導出文件,impdp只適用於expdp導出文件。

expdp導出數據:
1、為輸出路徑建立一個資料庫的directory對象。
create or replace directory mpdir as 'd:\';
可以通過:select * from dba_directories;查看。
2、給將要進行數據導出的用戶授權訪問
grant read,write on directory mpdir to test_expdp;
3、將數據導出
expdp test_expdp/test_expdp directory=mpdir mpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp
注意:這句話在cmd窗口中運行,並且最後不要加分號,否則會提示錯誤。因為這句話是操作系統命令而不是SQL。
impdp導入數據:
1、給將要進行數據導入的用戶授權訪問。
grant read,write on directory mpdir to test_impdp;
2、將數據導入
impdp test_impdp/impdp directory=mpdir mpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

㈢ Oracle資料庫如何導出

數據導出具體如下:

  1. 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中。

  2. 將資料庫中system用戶與sys用戶的表導出。

  3. 將資料庫中的表table1 、table2導出。

  4. 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出。

  5. 將D:chu.dmp 中的數據導入 TEST資料庫中。

  6. 將d:chu.dmp中的表table1 導入。


㈣ 怎樣將Oracle中的數據導出成SQL腳本

可用第三方工具PLSQL Developer將oracle的數據導成SQL腳本。

使用工具:PLSQL Developer

步驟:

1、打開PLSQL Developer,並登錄到要導出數據的庫里。

㈤ oracle 資料庫導入導出

Oracle ExpImp導入導出工具性能調優

Oracle Exp/Imp工具是一個操作簡單、方便靈活的備份恢復和數據遷移工具,它可以實施全庫級、用戶級、表級的數據備份和恢復。對於數據量在G級或G級以內,強調高可用性,可以容忍少量數據丟失的資料庫系統,Exp/Imp是普遍使用的邏輯備份方式。目前現網很多生產系統均使用Exp/Imp進行備份恢復。數據量達到G級以後,備份恢復的時間明顯拉長了,有沒有方法能夠有效提高Exp/Imp的速度呢?答案是肯定的,某些方法還可以成倍的提高速度,本文就從Exp、Imp兩個工具分別探討優化備份恢復性能的方法。

1 Exp調優

1.1 使用DIRECT和RECORDLENGTH選項

DIRECT參數定義了導出是使用直接路徑方式(DIRECT=Y),還是常規路徑方式(DIRECT=N)。常規路徑導出使用SQL SELECT語句從表中抽取數據,直接路徑導出則是將數據直接從磁碟讀到PGA再原樣寫入導出文件,從而避免了SQL命令處理層的數據轉換過程,大大提高了導出效率。在數據量大的情況下,直接路徑導出的效率優勢更為明顯,可比常規方法速度提高三倍之多。

和DIRECT=Y配合使用的是RECORDLENGTH參數,它定義了Export I/O緩沖的大小,作用類似於常規路徑導出使用的BUFFER參數。建議設置RECORDLENGTH參數為最大I/O緩沖,即65535(64kb)。其用法如下:

exp userid=system/manager full=y direct=y recordlength=65535 file=exp_full.dmp log=exp_full.log

直接路徑導出根據Oracle版本不同,有一些使用限制。比較重要的限制有,8i及以下版本不支持導出客戶端和資料庫的字元集轉換,因此導出前必須保證NLS_LANG設置正確;8.1.5及以下版本不支持導出含LOBs對象的表;不能使用QUERY參數等。

1.2 使用管道技術

管道是從一個程序進程向另一個程序進程單向傳送信息的技術。通常,管道把一個進程的輸出傳給另一進程作為輸入。如果導出的數據量很大,可以利用管道直接生成最終的壓縮文件,所耗費的時間和不壓縮直接導出的時間相當。這樣一來,不僅能夠解決磁碟空間不足的問題,而且省去了單獨壓縮文件的時間;如果需要傳輸導出文件,還可以減少網路傳輸的時間。比如,一個10G的文件單獨壓縮可能需要半小時以上的時間。雖然管道技術不能夠直接縮短Exp/Imp本身的時間,但節省出來的壓縮時間非常可觀。管道和Exp結合的具體使用方法如下:

導出數據示例:

% mknod /tmp/exp_pipe p # Make the pipe

% compress < /tmp/exp_pipe > export.dmp.Z & # Background compress

% exp file=/tmp/exp_pipe # Export to the pipe

2 Imp調優

Oracle Import進程需要花比Export進程數倍的時間將數據導入資料庫。某些關鍵時刻,導入是為了應對資料庫的緊急故障恢復。為了減少宕機時間,加快導入速度顯得至關重要。沒有特效辦法加速一個大數據量的導入,但我們可以做一些適當的設定以減少整個導入時間。

2.1 使用管道技術

前面已經說明了Exp時如何使用管道,在導入時管道的作用是相同,不僅能夠解決磁碟空間不足的問題,而且省去了單獨解壓縮文件的時間。在大數據量導入導出的時候,推薦一定要使用管道。

導入數據示例:

2.2 避免I/O競爭

Import是一個I/O密集的操作,避免I/O競爭可以加快導入速度。如果可能,不要在系統高峰的時間導入數據,不要在導入數據時運行job等可能競爭系統資源的操作。

2.3 增加排序區

Oracle Import進程先導入數據再創建索引,不論INDEXES值設為YES或者NO,主鍵的索引是一定會創建的。創建索引的時候需要用到排序區,在內存大小不足的時候,使用臨時表空間進行磁碟排序,由於磁碟排序效率和內存排序效率相差好幾個數量級。增加排序區可以大大提高創建索引的效率,從而加快導入速度。

8i及其以下版本:導入數據前增加資料庫的sort_area_size大小,可設為正常值的5-10倍。但這個值設定會影響到所有會話,設的過高有可能導致內存不足出現paging, swapping現象。更為穩妥的方法是,對於大表和索引特別多的表,只導數據不導索引。導完數據後,創建一個會話,設定當前會話的sort_area_size一個足夠大的值,再手工創建索引。

9i:在workarea_size_policy=AUTO的情況下,所有會話的UGA共用pga_aggregate_target定義的內存,不必單獨設定sort_area_size。導入數據前增加pga_aggregate_target大小,如果機器內存夠大,可從通常設定的500M提高到1-2G。pga_aggregate_target大小可以動態調整,導入完成後可在線調回原值。

2.4 調整BUFFER選項

Imp參數BUFFER定義了每一次讀取導出文件的數據量,設的越大,就越減少Import進程讀取數據的次數,從而提高導入效率。BUFFER的大小取決於系統應用、資料庫規模,通常來說,設為百兆就足夠了。其用法如下:

imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000

2.5 使用COMMIT=Y選項

COMMIT=Y表示每個數據緩沖滿了之後提交一次,而不是導完一張表提交一次。這樣會大大減少對系統回滾段等資源的消耗,對順利完成導入是有益的。

2.6 使用INDEXES=N選項

前面談到增加排序區時,說明Imp進程會先導入數據再創建索引。導入過程中建立用戶定義的索引,特別是表上有多個索引或者數據表特別龐大時,需要耗費大量時間。某些情況下,需要以最快的時間導入數據,而索引允許後建,我們就可以使用INDEXES=N 只導入數據不創建索引,從而加快導入速度。

我們可以用INDEXFILE選項生成創建索引的DLL腳本,再手工創建索引。我們也可以用如下的方法導入兩次,第一次導入數據,第二次導入索引。其用法如下:

imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=y indexes=n

imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_index_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=n indexes=y

2.7 增加LARGE_POOL_SIZE

如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等參數,tnsnames.ora中又沒有(SERVER=DEDICATED)的配置,那麼資料庫就使用了共享伺服器模式。在MTS模式下,Exp/Imp操作會用到LARGE_POOL,建議調整LARGE_POOL_SIZE到150M。

檢查資料庫是否在MTS模式下:

SQL>select distinct server from v$session;

如果返回值出現none或shared,說明啟用了MTS。

附錄:EXP/IMP命令選項注釋

>exp help=y

通過輸入 EXP 命令和用戶名/口令,您可以

後接用戶名/口令的命令:

常式: EXP SCOTT/TIGER

或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制「導出」

按照不同參數。要指定參數,您可以使用關鍵字:

格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

常式: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)

或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明(默認) 關鍵字 說明(默認)

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

USERID 用戶名/口令 FULL 導出整個文件 (N)

BUFFER 數據緩沖區大小 OWNER 所有者用戶名列表

FILE 輸出文件 (EXPDAT.DMP) TABLES 表名稱列表

COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度

GRANTS 導出許可權 (Y) INCTYPE 增量導出類型

INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)

DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)

LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE)

ROWS 導出數據行 (Y) PARFILE 參數文件名

CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 導出的約束條件 (Y)

OBJECT_CONSISTENT 只在對象導出期間設置為讀的事務處理 (N)

FEEDBACK 每 x 行的顯示進度 (0)

FILESIZE 每個轉儲文件的最大大小

FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN

FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間

QUERY 用於導出表的子集的 select 子句

RESUMABLE 遇到與空格相關的錯誤時掛起 (N)

RESUMABLE_NAME 用於標識可恢復語句的文本字元串

RESUMABLE_TIMEOUT RESUMABLE 的等待時間

TTS_FULL_CHECK 對 TTS 執行完整的或部分相關性檢查

TABLESPACES 要導出的表空間列表

TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)

TEMPLATE 調用 iAS 模式導出的模板名

>imp help=y

可以通過輸入 IMP 命令和您的用戶名/口令

後接用戶名/口令的命令:

常式: IMP SCOTT/TIGER

或者, 可以通過輸入 IMP 命令和各種參數來控制「導入」

按照不同參數。要指定參數,您可以使用關鍵字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明(默認) 關鍵字 說明(默認)

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

USERID 用戶名/口令 FULL 導入整個文件 (N)

BUFFER 數據緩沖區大小 FROMUSER 所有人用戶名列表

FILE 輸入文件 (EXPDAT.DMP) TOUSER 用戶名列表

SHOW 只列出文件內容 (N) TABLES 表名列表

IGNORE 忽略創建錯誤 (N) RECORDLENGTH IO 記錄的長度

GRANTS 導入許可權 (Y) INCTYPE 增量導入類型

INDEXES 導入索引 (Y) COMMIT 提交數組插入 (N)

ROWS 導入數據行 (Y) PARFILE 參數文件名

LOG 屏幕輸出的日誌文件 CONSTRAINTS 導入限制 (Y)

DESTROY 覆蓋表空間數據文件 (N)

INDEXFILE 將表/索引信息寫入指定的文件

SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)

FEEDBACK 每 x 行顯示進度 (0)

TOID_NOVALIDATE 跳過指定類型 ID 的驗證

FILESIZE 每個轉儲文件的最大大小

STATISTICS 始終導入預計算的統計信息

RESUMABLE 在遇到有關空間的錯誤時掛起 (N)

RESUMABLE_NAME 用來標識可恢復語句的文本字元串

RESUMABLE_TIMEOUT RESUMABLE 的等待時間

COMPILE 編譯過程, 程序包和函數 (Y)

STREAMS_CONFIGURATION 導入 Streams 的一般元數據 (Y)

STREAMS_INSTANITATION 導入 Streams 的實例化元數據 (N)

下列關鍵字僅用於可傳輸的表空間

TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)

TABLESPACES 將要傳輸到資料庫的表空間

DATAFILES 將要傳輸到資料庫的數據文件

TTS_OWNERS 擁有可傳輸表空間集中數據的用戶

㈥ oracle 如何把資料庫查詢結果導出

1、打開oracle資料庫,點擊登陸選項,點擊文件選項,點擊新建選項,最後點擊sql窗口;

㈦ 如何使用SQL語句將Oracle資料庫表導出為TXT文件

可用spool的方式將oracle的數據導出成文本。

1、登錄sqlplus到指定資料庫。

2、在某一路徑,如c盤data目錄下,創建腳本,文件名為:導出腳本.sql 內容如下:

set colsep '|' --設置|為列分隔符

settrimspoolon
setlinesize120
setpagesize2000
setnewpage1
setheadingoff
settermoff
setnum18
setfeedbackoff
spoolc:data導出.txt
select*fromemp;
spooloff

3、執行命令:

@C:data導出腳本.sql

4、執行結束後,c盤data目錄下會生成導出.txt的文件,里邊內容就是導出表中的內容。