真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

dimp時報錯,字符串截斷

現(xiàn)象描述

達夢也有自己的邏輯備份工具(dexp 、dimp )用法和Oracle 類似,詳細用法可以參考官方手冊dexp&dimp.pdf

博羅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

但是,我們有時候在進行dimp 時,會碰到字符串截斷的問題。

碰到這種問題,我們怎么解決呢?

受限我們一定要非常明確,字符串截斷這個報錯,一定就只是精度不足,這里只是針對兩種可能的情況的,描述下該問題。

只需要考慮兩個問題:

?   是否表結(jié)構(gòu)不一致,就是dexp 的表,是varchar (500 ),我們導(dǎo)入的表只是varchar (400

這種情況少,因為有時候我們經(jīng)常是全用戶新建導(dǎo)入,表結(jié)構(gòu)也是源端帶入過來的。

?   Dexp 源端的數(shù)據(jù)庫實例字符集,是否和dimp 目的端數(shù)據(jù)庫實例的字符集一致

這個是我們可能沒有注意的問題。

處理方法

處理方法一:核查表結(jié)構(gòu)是否一致

是否表結(jié)構(gòu)不一致,就是dexp 的表,是varchar (500 ),我們導(dǎo)入的表只是varchar (400 )

這個問題好理解,就是字面意思,我們只需要把目的表的精度改成和源端一致,重新清空目的表,再導(dǎo)入即可。

處理方法二:核查數(shù)據(jù)庫實例字符集

我們碰到這個問題的時候,實際上就是我們從UTF-8 的數(shù)據(jù)庫實例上dexp 出來的數(shù)據(jù)庫,往GB18030 的數(shù)據(jù)庫實例上dimp ,才會碰到這個問題。

默認情況下,達夢數(shù)據(jù)庫實例的varchar 字段的精度,表示的含義是字節(jié),而對于漢字而言,在UTF-8 編碼下的字節(jié)占用,是比GB18030 編碼下的字節(jié)占用,要大。

所以反過來說,對于dexp&dimp 搬過來的表結(jié)構(gòu),都是一致的情況下,比如:都是varchar (400 ),可以存放的漢子個數(shù),是不一樣的。

備注:

-           對于同一項目內(nèi)的數(shù)據(jù)庫實例、可能需要互相進行數(shù)據(jù)傳遞的實例之間,務(wù)必把數(shù)據(jù)庫底層參數(shù)(含字符集)規(guī)劃并切實設(shè)置成一致!

-           同一項目內(nèi)的數(shù)據(jù)庫實例,請務(wù)必保持一致、非同一項目內(nèi),有數(shù)據(jù)傳遞需求,但是相關(guān)性不搞,且確實不能保持一致的字符集,可以通過手動放大目的端數(shù)據(jù)庫實例上的varchar 字段精度。為什么可以這樣處理,方法二中已經(jīng)說明。

這是一個把數(shù)據(jù)庫實例中目標表中的所有varchar 字段,精度放大一倍的腳本(當成SQL 執(zhí)行):通過控制游標查出來的表即可。

declare

begin

for rs in(

select sch.name sch,tab.name tab,col.name   col,COl.length$ len from sysobjects sch,sysobjects tab ,syscolumns col

where sch.id=tab.schid and   sch.name||'.'||tab.name in (

'USER.TABUTKMONITOR',

'USER.TABUTHORIZATIONRISKLOG',

'USER.TABUSTOMER',

'USER.TABARD',

'USER.TABOSSREPORT',

'USER.TABUDGETENTITYCARDS',

'USER.TABRANSACTIONLOG',

'USER.TABCCOUNT',

'USER.TABSTOMERINFO',

'USER.TABRANSACTIONLOG',

'USER.TABUTHORIZATIONRISKLOG'

)

and tab.id=col.id and col.TYPE$ in   ('VARCHAR','VARCHAR2') ) loop

declare

begin

 execute immediate 'alter table   "'||rs.sch||'"."'||rs.tab||'" modify '||rs.col||'   varchar('||rs.len*2||');';

exception when others then

 print(sqlerrm);

end;

end loop;

end;


網(wǎng)站名稱:dimp時報錯,字符串截斷
文章路徑:http://weahome.cn/article/gghpos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部