dimp時報錯,字串截斷
現象描述
達夢也有自己的邏輯備份工具(dexp 、dimp )用法和Oracle 類似,詳細用法可以參考官方手冊dexp&dimp.pdf
但是,我們有時候在進行dimp 時,會碰到字串截斷的問題。
碰到這種問題,我們怎麼解決呢?
受限我們一定要非常明確,字串截斷這個報錯,一定就只是精度不足,這裡只是針對兩種可能的情況的,描述下該問題。
只需要考慮兩個問題:
Ø 是否表結構不一致,就是dexp 的表,是varchar (500 ),我們匯入的表只是varchar (400 )
這種情況少,因為有時候我們經常是全使用者新建匯入,表結構也是源端帶入過來的。
Ø Dexp 源端的資料庫例項字符集,是否和dimp 目的端資料庫例項的字符集一致
這個是我們可能沒有注意的問題。
處理方法
處理方法一:核查表結構是否一致
是否表結構不一致,就是dexp 的表,是varchar (500 ),我們匯入的表只是varchar (400 )
這個問題好理解,就是字面意思,我們只需要把目的表的精度改成和源端一致,重新清空目的表,再匯入即可。
處理方法二:核查資料庫例項字符集
我們碰到這個問題的時候,實際上就是我們從UTF-8 的資料庫例項上dexp 出來的資料庫,往GB18030 的資料庫例項上dimp ,才會碰到這個問題。
預設情況下,達夢資料庫例項的varchar 欄位的精度,表示的含義是位元組,而對於漢字而言,在UTF-8 編碼下的位元組佔用,是比GB18030 編碼下的位元組佔用,要大。
所以反過來說,對於dexp&dimp 搬過來的表結構,都是一致的情況下,比如:都是varchar (400 ),可以存放的漢子個數,是不一樣的。
備註:
- 對於同一專案內的資料庫例項、可能需要互相進行資料傳遞的例項之間,務必把資料庫底層引數(含字符集)規劃並切實設定成一致!
- 同一專案內的資料庫例項,請務必保持一致、非同一專案內,有資料傳遞需求,但是相關性不搞,且確實不能保持一致的字符集,可以通過手動放大目的端資料庫例項上的varchar 欄位精度。為什麼可以這樣處理,方法二中已經說明。
這是一個把資料庫例項中目標表中的所有varchar 欄位,精度放大一倍的指令碼(當成SQL 執行):通過控制遊標查出來的表即可。
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; |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949798/viewspace-2660603/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python如何截斷字串Python字串
- 達夢資料庫DM Exception字串截斷錯誤,略坑~資料庫Exception字串
- 象專業人員那樣截斷字串字串
- C++ 字串截斷的實現(基礎函式)C++字串函式
- 前端文字截斷前端
- MySQL create function時報錯MySqlFunction
- 安裝PostgreSQL 時報錯SQL
- Sql Server對等複製中將截斷字串或二進位制資料。 (源: MSSQLServer,錯誤號: 8152)SQLServer字串
- python 分片、截斷序列Python
- 物件業務的截斷介面物件
- yii執行phpunit時報錯PHP
- 安裝informix for nt時報錯ORM
- PD連線oracle時報錯Oracle
- System.data.sqlclient.sqlexception:將截斷字串或二進位制資料終止SQLclientException字串
- 讀取popen輸出結果時未截斷字串導致的命令列注入字串命令列
- php判斷字串A是否含有字串BPHP字串
- 靜默安裝oracle時報錯Oracle
- 跪問:java編譯時報錯Java編譯
- 跪問:java編譯時報錯!!!Java編譯
- laravel11: 安裝時報錯Laravel
- 前端開發入門到實戰:css單行截斷和多行截斷問題前端CSS
- PHP字串包含判斷PHP字串
- bash中字串判斷字串
- js判斷字串是以指定字串結尾JS字串
- 位擴充套件和位截斷套件
- 使用 Composer 安裝 Laravel 時報錯Laravel
- laravel 資料庫遷移時報錯Laravel資料庫
- EF:開啟Oracle連線時報錯Oracle
- IE9 平時報錯,F12不報錯IE9
- 【JAVA】判斷字串非空Java字串
- 判斷字串是否為空字串
- 判斷URL字串是否合法字串
- 判斷字串為空方法字串
- 判斷字串是否唯一字串
- 純 CSS 實現多行文字截斷CSS
- CSS 實現文字"不定行數"截斷CSS
- 關於SQL Server 截斷日誌[zt]SQLServer
- 匯入sql時報日期型別錯誤SQL型別