2010年2月13日
一種方法是用函數:這里轉帖網上摘抄的一個函數
CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
這里提供另外一種方法,tbw利用oracle的正則相關函數實現:
select dbms_lob.substr(regexp_substr('abc,def,ggg,1,2,3,4,5', '[^,]+', 1, x.n)) as player_guid
from dual a, (select rownum n from dual connect by rownum < 100) x
這里利用了函數 regexp_substr和connect by
其中rownum < 100 會連接限制split的次數 '[^,]+'為split拆分的正則表達式,這里為【,】逗號
上面sql語句結果是:
abc
def
ggg
1
2
3
4
5
select * from ausertable order by userid;
commit; //執行 結束
1:最近剛開始用oracle 數據庫,很多東西都不怎么懂,要在tbw賬號表添加 1000個賬號,找了一些資料,經過測試可以使用,開始 我吧語法 都跟SqlServer 里面的混了,花了一個上午的時間,下面就是測試的數據的代碼:特別注意的是:'01'||to_char(i)這里 一直meiyo
DECLARE
i number:=0;
BEGIN
for i in 1..100 loop
insert into AUSERTABLE(USERID,USERPID,USERNAME)
values('01'||to_char(i),'8','武漢');
dbms_output.put_line(i);
end loop;
END;
學習Oracle時,你可能會遇到Oracle數據導入問題,這里將介紹Oracle數據導入問題的解決方法,在這里拿出來和大家分享一下。Oracle數據導入實用程序(Import utility)允許從數據庫提取數據,并且將數據寫入操作系統文件。imp使用的基本格式:imp[username[/password[@service]]],以下例舉imp常用用法。
1. 獲取幫助
imp help=y
2. 導入一個完整數據庫
imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 導入一個或一組指定用戶所屬的全部表、索引和其他對象
imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 將一個用戶所屬的數據導入另一個用戶
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
5. 導入一個表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 從多個文件導入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7. 使用參數文件
imp system/manager parfile=bible_tables.par
Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8. 增量導入
imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle數據導入導出imp/exp就相當于oracle數據還原與備份。exp命令可以把數據從遠程數據庫服務器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的數據庫服務器中。 利用這個功能可以構建兩個相同的數據庫,一個用來測試,一個用來正式使用。
執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,DOS中可以執行時由于 在oracle 8i 中 安裝目錄\ora81\BIN被設置為全局路徑,該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。oracle用java編寫,SQLPLUS.EXE、EXP.EXE、IMP.EXE這兩個文件有可能是被包裝后的類文件。SQLPLUS.EXE調用EXP.EXE、IMP.EXE所包裹的類,完成導入導出功能。
轉載:http://www.mengbu.com/ 地址:http://www.mengbu.com/news/56/