不同字符集倒庫的方法
第一步:EXP 原 US7ASCII資料庫中的SCOTT使用者。
第二步:EXP 原US7ASCII 資料庫中的ZHAOBOYI使用者。
第三步:CREATE NEW DATABASE(CHARACTER SET SIMPLIFIED CHINESE_CHINA.ZHS16GBK),
所有的路徑與原
資料庫相同。
第四步:將ZHS16GBK 中的INIT。ORA COPY INIT。ORA。BAK。
第五步:將US7ASCII 中的INIT。ORA COPY ZHS16GBK 修改相應引數。
第六步:生成ZHS16GBK 中的SCOTT 使用者,授權,EXP ZHS16GBK 中的SCOTT 使用者。
第七步: 生成ZHS16GBK 中的ZHAOBOYI 使用者,EXP ZHS16GBK 中的ZHAOBOYI 使用者。
第八步:用ULTRAEDIT 分別開啟(US7ASCII)以及(ZHS16GBK)SCOTT 使用者,將前5行中的U
S7ASCII 不同處改掉。
第九步:相應的做ZHAOBOYI 使用者。
第十步:在ZHS16GBK中,執行SYS 使用者的OWALOAD。SQL ,對HTP。P授權。
第十一步:做IMP,把原有的資料庫倒入到新的資料庫。
第十二步:解決大欄位問題。
首先在原資料庫中執行儲存過程 fwrite_clob_NIU,將含有大欄位的表生成到檔案中,接著
,在新資料庫中編譯執行fupdate_clob_text,
將大欄位倒回到新資料庫中。
附錄:
1。儲存過程:FWRITE——CLOB——NIU
procedure fwrite_clob_NIU as
CURSOR c_lt IS
SELECT c.text,c.info_id
FROM info_ctext c
where info_id <= 120
--change7.16 WHERE info_id <=100
order by info_id asc;
/*
1000-1100 F
1100-1600 OK
1600-1630 OK
1629-1640 OK
1640-1660 F
1660-1668 OK
1669 F
1670-1750 OK
*/
Str VARCHAR2(32767) := Null;
Position INTEGER := 1;
New_Position INTEGER := 1;
Pat varchar2(80) := 'd:/writeclob';
--change716 Pat varchar2(80) := '/export/home0/ora8i/doc/ch';
Save_File utl_file.file_type;
Result BOOLEAN := FALSE;
Dir_Delimiter VARCHAR2(200) := '/';
--change 7.16 Dir_Delimiter VARCHAR2(200) := '/'; -- NOTE: Use '/' for Win
dows NT
p_Filename VARCHAR2(200);
v_offset integer;
v_amount integer;
v_buffer varchar2(30240);
BEGIN
v_amount := 30240;
IF SUBSTR( Pat, LENGTH( Pat ), 1 ) != Dir_Delimiter THEN
Pat := Pat || Dir_Delimiter; END IF;
BEGIN
FOR r IN c_lt
LOOP
IF r.text is not null then
p_Filename := r.info_id ||'.dat';
New_Position:=1;
Position:=1;
Save_File := utl_file.fopen( Pat, p_Filename, 'w' );
if DBMS_LOB.INSTR( r.text, CHR(10), Position ) = 0 then
begin
V_OFFSET := 1;
v_buffer := '';
loop
dbms_lob.read(r.text,v_amount,v_offset,v_buffer);
v_offset := v_offset + v_amount;
utl_file.put( Save_File, v_buffer );
-- htp.p(v_buffer);
-- htp.p('jjjj');
end loop;
exception
when no_data_found then
null;
end;
-- htp.p('111');
-- Str := DBMS_LOB.SUBSTR( r.text,1)||CHR(10);
-- HTP.P(STR);
end if;
WHILE( New_Position != 0 )
LOOP
New_Position := DBMS_LOB.INSTR( r.text, CHR(10), Position );
Str := DBMS_LOB.SUBSTR( r.text, New_Position - Position, Position );
-- HTP.P('STR=');
-- HTP.P(STR);
Position := New_Position + 1;
--change 7.17 IF New_Position != 0 THEN
utl_file.put_line( Save_File, REPLACE( Str, CHR(10), Null ) );
-- else
-- utl_file.put_line( Save_File, Str );
-- change 7.17
-- htp.p(new_position);
-- END IF;
END LOOP;
UTL_FILE.FCLOSE(Save_File);
htp.p('
');
end if;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
htp.p('
');
end;
END fwrite_clob_niu;
附錄二:儲存過程fupdate_clob_text
procedure fupdate_clob_text as
CURSOR c_lt IS
SELECT c.text,c.info_id
FROM info_ctext c
-- where info_id = 112
where ((info_id >= 1 and info_id <= 30) or
(info_id >=30 and info_id <= 60) or
(info_id >=60 and info_id <= 90) or
(info_id >=90 and info_id <= 120))
/* --CHANGE 716 WHERE type not in ('B','C','V','A','E') and ((info_id >=10000
and info_id <20000) or
(info_id >=1100 and info_id <1601) or
(info_id >=1600 and info_id <1630) or
(info_id >=1660 and info_id <1668) or
info_id >=1670 or
(info_id >=0 and info_id <501))
*/
order by info_id asc;
/*
1000-1100 F
1100-1600 OK
1600-1630 OK
1629-1640 OK
1640-1660 F
1660-1668 OK
1669 F
1670-1750 OK
*/
Tmp CLOB; 大連無痛人流哪家好
Pat varchar2(80) := 'd:/writeclob';
-- CHANGE 7.16 Pat varchar2(80) := '/export/home0/ora8i/doc/ch';
Save_File utl_file.file_type;
Result BOOLEAN := FALSE;
Dir_Delimiter VARCHAR2(200) := '/';
-- change 7.16 Dir_Delimiter VARCHAR2(200) := '/'; -- NOTE: Use '/' for W
indows NT
p_Filename VARCHAR2(200);
BEGIN
htp.p('我們');
IF SUBSTR( Pat, LENGTH( Pat ), 1 ) != Dir_Delimiter THEN
Pat := Pat || Dir_Delimiter; END IF;
FOR r IN c_lt
LOOP
begin
p_Filename :=to_char(r.info_id)||'.dat';
UPDATE info_ctext SET text = ' '
WHERE info_id=r.info_id;
COMMIT;
SELECT text INTO Tmp FROM info_ctext
WHERE info_id = r.info_id FOR UPDATE;
-- DBMS_LOB.TRIM( Tmp, 0 );
Result := Load_File( Pat, p_Filename, Tmp );
IF Result THEN
UPDATE info_ctext SET text = Tmp
WHERE info_id=r.info_id;
COMMIT;
END IF;
end;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
htp.p('
');
END fupdate_clob_text;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2789188/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 不同版本預設字符集MySql
- MYSQL 字符集不同引起的join無法走索引MySql索引
- MySQL檢視和修改字符集的方法MySql
- wordpress 不同的人看到不同的媒體庫
- Django 中的資料庫update() 和 save() 方法的機制的不同Django資料庫
- Oracle 12.2 新特性 | PDB不同字符集變更深入解析Oracle
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- 資料庫建庫時字符集和排序規則的選擇資料庫排序
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- 修改不同IP的方法介紹!
- Tomcat 配置支援不同的域名訪問各自不同程式的配置方法Tomcat
- ALTER TABLE修改列的不同方法
- 好程式設計師Java教程分享SQL資料庫不同的最佳化方法程式設計師JavaSQL資料庫
- 湖泊和河流的成因有何不同?湖泊和水庫又有何不同?
- Qt設定根據編譯器不同連結不同的lib庫QT編譯
- Redis 不同插入方法的效能對比Redis
- powershell無法修改字符集,非修改登錄檔修改powershell的方法
- 關於mysql查詢字符集不匹配問題的解決方法MySql
- 字符集
- 如何在10g中修改資料庫字符集資料庫
- String類中的equals方法與Object類中的equals方法的不同點Object
- 心裡的垃圾定期倒一倒
- 類的方法,函式,同一個package不同.py檔案,不同package不同.py檔案————呼叫問題函式Package
- Laravel 資料庫佇列倒序執行Laravel資料庫佇列
- 還原sql server 2000資料庫的坑,不同版本資料庫SQLServer資料庫
- Tomcat字符集Tomcat
- MySQL字符集MySql
- AWS Around---NoSql資料庫的不同型別SQL資料庫型別
- 深入理解Emoji(一) —— 字符集,字符集編碼
- 38、字符集_2(匯出匯入指定字符集)
- C# 實現http不同方法的請求C#HTTP
- Python中字典dict的11種不同操作方法Python
- 聊一聊MySQL的字符集MySql
- Spring Boot應用中如何動態指定資料庫,實現不同使用者不同資料庫的場景Spring Boot資料庫
- win10 如何在不同視窗切換 win10 切換不同的桌面方法Win10
- 生產庫當機加老家暴雨的十一,我想倒帶
- 用不同的庫實現模擬登陸知乎!
- Spring系列之不同資料庫異常如何抽象的?Spring資料庫抽象