亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

SQL Server數(shù)據(jù)遷移至PostgreSQL出錯的解釋以及解決方案

2020-03-12 23:54:30
字體:
供稿:網(wǎng)友

最近對SQL Server到PostgreSQL的數(shù)據(jù)遷移時出現(xiàn)了問題,返回的錯誤為:invalid byte sequence for encoding "UTF8": 0x00。經(jīng)查證pg源代碼,該問題引起的原因是sql server的字符類型字段中含有空字符/0,該字符在pg中不支持。

問題重現(xiàn):

1、PG客戶端:

 

 
  1. postgres=# create table text_test (id int,info text); 
  2. CREATE TABLE 
  3. postgres=# insert into text_test values (1,E'/0x00'); 
  4. ERROR: invalid byte sequence for encoding "UTF8": 0x00 

2、SQL Server產(chǎn)生數(shù)據(jù)

 

 
  1. create table test_varchar(id int,name varchar(20)); 
  2. insert into test_varchar values (1, 'name' + char(0)); 
  3. insert into test_varchar values (1, 'name' + ''); 

然后通過java程序進行獲取數(shù)據(jù)并插入到PG,同樣會得到錯誤信息:

 

 
  1. invalid byte sequence for encoding "UTF8": 0x00 

首先我們認為此為gb2312轉(zhuǎn)化到UTF8時,發(fā)生了無法轉(zhuǎn)化的錯誤。經(jīng)查UTF8是變長的, 1-6個字節(jié)。他的編碼規(guī)則如下:

Bits Last code point Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
7 U+007F 0xxxxxxx          
11 U+07FF 110xxxxx 10xxxxxx        
16 U+FFFF 1110xxxx 10xxxxxx 10xxxxxx      
21 U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx    
26 U+3FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
31 U+7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

而0x00是符合UTF8規(guī)則的。這就使我們非常詫異。然后我們發(fā)現(xiàn)有兩點繼而確認了問題:

1、
 

  1. PostgreSQL doesn't support storing NULL (/0x00) characters in text fields (this is obviously different from the database NULL value, which is fully supported). 
  2.  
  3. If you need to store the NULL character, you must use a bytea field - which should store anything you want, but won't support text operations on it. 
  4.  
  5. Given that PostgreSQL doesn't support it in text values, there's no good way to get it to remove it. You could import your data into bytea and later convert it to text using a special function (in perl or something, maybe?), but it's likely going to be easier to do that in preprocessing before you load it. 
  6.  
  7. Source:http://stackoverflow.com/questions/1347646/postgres-error-on-insert-error-invalid-byte-sequence-for-encoding-utf8-0x0 

 2、

Terminating character

Indicated by

Tab

/t

This is the default field terminator.

Newline character

/n

This is the default row terminator.

Carriage return/line feed

/r

Backslash1

//

Null terminator (nonvisible terminator)2

/0

Any printable character (control characters are not printable, except null, tab, newline, and carriage return)

(*, A, t, l, and so on)

String of up to 10 printable characters, including some or all of the terminators listed earlier

(**/t**, end, !!!!!!!!!!, /t—/n, and so on)

Source:http://msdn.microsoft.com/en-us/library/ms191485.aspx

由此我們確定,是pg對null的處理和SQL Server處理是不相同的,所以在這里出現(xiàn)了錯誤。

而導(dǎo)致這一問題的PG具體代碼如下(src/backend/utils/mb/wchar.c的pg_verify_mbstr_len):

 

 
  1. if (!IS_HIGHBIT_SET(*mbstr)) 
  2. if (*mbstr != '/0'
  3. mb_len++; 
  4. mbstr++; 
  5. len--; 
  6. continue
  7. if (noError) 
  8. return -1; 
  9. report_invalid_encoding(encoding, mbstr, len); 

 

 
  1. #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT) 
  2. #define HIGHBIT (0x80) 

report_invalid_encoding函數(shù)是將錯誤信息返回,也就是

invalid byte sequence for encoding "UTF8": 0x00

而真正導(dǎo)致這一問題的就是:

!IS_HIGHBIT_SET(*mbstr)當(dāng)*mbstr為0x00時進入判斷,然后進而判斷*mbstr是否為/0,當(dāng)為/0時,直接進入函數(shù)report_invalid_encoding報錯。

所以出現(xiàn)此問題的原因是PG和SQL Server對null的處理是不相同的。

處理方案 :

1、將SQL Server源數(shù)據(jù)進行修改方法,

 

 
  1. UPDATE: This seems to work
  2.  
  3. Select * from TABLE 
  4. where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0 
  5. So: 
  6.  
  7. Update TABLE 
  8. SET naughtyField = SUBSTRING(naughtyField, 1, LEN(naughtyField) - 1) 
  9. where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0 
  10. Source:http://stackoverflow.com/questions/3533320/sql-server-remove-end-string-character-0-from-data 

2、對應(yīng)用進行修改,獲取到SQL Server數(shù)據(jù)時,將數(shù)據(jù)進行轉(zhuǎn)化,和第一種方法異曲同工。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产馆在线观看| 99精品欧美一区二区蜜桃免费| 欧美a级片免费看| 亚洲国产成人精品女人久久久| 亚洲高清免费一级二级三级| 久久久噜噜噜久久中文字免| 91麻豆精品国产91久久久更新资源速度超快| 欧美高清精品一区二区| lutube成人福利在线观看| 欧美色图五月天| 日本亚洲欧美美色| 伊人色综合久久天天| 国产一级在线免费观看| 欧美重口另类| 你懂的网站在线观看网址| 99精品视频播放| 99ri国产在线| а天堂中文最新一区二区三区| 日本最新高清不卡中文字幕| 亚洲一区二区三区免费在线观看| 99久久激情| 国产午夜福利在线播放| 国产午夜亚洲精品理论片色戒| 日韩综合另类| 日本一区高清不卡| 日本三日本三级少妇三级66| 亚洲影院在线| 亚洲精品大片www| 日本三级福利片| 国产日韩三级| av资源网在线观看| 国产精品一区而去| 国产免费一区二区三区免费视频| 美女视频一区免费观看| 亚洲欧洲另类精品久久综合| 亚洲经典中文字幕| 久久久精品电影| 小舞被吸乳羞羞网站视频| 日韩精品亚洲一区二区三区免费| 在线视频国内自拍亚洲视频| 免费在线午夜视频| 久久99精品久久久久久水蜜桃| 国产成人一区在线| 欧美精品一区二区三区高清aⅴ| 青青草偷拍视频| 在线视频 中文字幕| 精品动漫一区二区三区| 99在线视频免费观看| 成人免费视频观看| 免费在线观看av电影| 国产一区二区三区在线播放免费观看| 一级日韩一级欧美| 香蕉久久夜色| 国产精品熟妇一区二区三区四区| 一二三区免费视频| 国产高清视频在线| 51视频国产精品一区二区| 欧美69视频| 丝袜亚洲另类丝袜在线| 色婷婷在线影院| 91无套直看片红桃在线观看| 中文精品久久久久人妻不卡| 欧美午夜精品理论片a级按摩| 野花国产精品入口| 欧美色大人视频| 狠狠综合久久av一区二区老牛| 婷婷五月色综合香五月| 天堂av一区二区三区| 欧美夜福利tv在线| 蜜臀久久99精品久久一区二区| 女生影院久久| 国产男女在线观看| 国产精品一区二区男女羞羞无遮挡| 国产夫绿帽单男3p精品视频| 国产精品成人一区二区三区吃奶| 国产尤物一区二区在线| 视频在线在亚洲| 亚洲香蕉成人av网站在线观看| 亚洲欧美自拍偷拍色图| 户外极限露出调教在线视频| 麻豆国产在线视频| 日韩成人在线观看视频| 亚洲国产一区二区三区在线观看| 日本在线一级片| 日本视频一区二区| 久热99视频在线观看| 久久精品国产www456c0m| 欧美国产视频一区二区| 快色在线观看| 国产91精品在线观看| 黄色工厂这里只有精品| 青青青手机在线视频| 国产日韩欧美高清免费| 91久久国产视频| 黄色av资源| 国产精品旅馆在线| 在线视频色在线| 久久久久国产美女免费网站| 91狠狠综合久久久久久| 久久久久毛片免费观看| 成人亚洲视频在线观看| 精彩视频一区二区| 日本亚洲欧洲色| 亚洲成人黄色网址| wwwxxx亚洲| 成人a级免费视频| 西西44rtwww国产精品| 日本成人中文字幕在线视频| 女人av一区| 91免费网站视频| 久久免费在线观看| 中文字幕视频在线观看| 国产精品日日摸夜夜摸av| 免费高清在线观看电视| 日韩中文一区二区三区| 中文在线字幕观看| 国产精品成人观看视频免费| 91免费视频网站| 亚洲娇小娇小娇小| 国产精品美女久久久久av爽| 99这里只有久久精品视频| 一区二区三区自拍视频| 亚洲精品成人区在线观看| 卡通欧美亚洲| 精品国产一区二区三区在线观看| 午夜久久中文| 精品日韩欧美一区| 国产午夜精品理论片在线| 亚洲国产精品久久久久| 亚洲精品电影院| 亚洲精品免费在线观看视频| 92看片淫黄大片欧美看国产片| 色婷婷久久一区二区三区麻豆| 97久久精品在线| 亚洲综合色在线观看| 日韩一区二区在线视频| 亚洲国产精品久久久久婷婷软件| 亚洲精品成人在线| 国产免费一区二区三区最新6| 一级日韩一区在线观看| 少妇的滋味中文字幕bd| 日韩国产高清视频在线| 午夜精品久久久久久久第一页按摩| 五月天视频一区| 欧美一级片网址| 久久99国产乱子伦精品免费| 色噜噜狠狠成人中文综合| 亚洲插插视频| 亚洲第一网站在线观看| 国产一区二区精品在线观看| 日韩精品一区二区三区中文不卡| 91九色蝌蚪91por成人| 91免费公开视频| 久在线观看视频| 久久青草视频| 激情综合电影网| 手机av在线不卡| 97avcom| 麻豆国产一区| 综合综合综合综合综合网| 中文字幕第三区| 一区二区三区中文字幕| 亚洲国产精品综合小说图片区| 亚洲一区二区三区视频| 在线精品91av| 日韩成人黄色av| 欧美大片国产精品| 在线看的网站你懂| 99re在线视频精品| 久久久国产在线视频| 中文字幕av免费| 先锋影音欧美| 亚洲v天堂v手机在线| 精品女同一区二区三区在线观看| 国产在线网站| 亚洲xxxx在线| 91九色露脸| 美女av在线免费看| 可以直接看的无码av| 亚洲综合激情网| 午夜先锋成人动漫在线| 2023国产精品视频| 日韩精品国产一区二区| 蜜桃精品久久久久久久免费影院| 色综合一区二区三区| 午夜成年女人毛片免费观看| 亚洲视频分类| 中文字幕4区| 国产 欧美 日韩 在线| 欧洲金发美女大战黑人| 亚洲欧洲日本精品| 九色国产在线观看| 99这里只有精品视频| 日本午夜精品理论片a级app发布| 免费的很黄很污的视频网站| 欧美一级淫片免费视频魅影视频| 丰满的亚洲女人毛茸茸| 亚洲欧洲免费无码| 免费av网页| 91在线三级| 天堂网www在线资源中文| 国产91色综合久久免费分享| 国产网站免费观看| 国产区在线观看视频| 亚洲精美视频| 国产成人精品av在线| 国产精品综合av一区二区国产馆| 猫咪在线永久网站| av一本久道久久波多野结衣| 欧美禁忌电影| 欧美精品三级日韩久久| 男女爱爱免费网站| 五月婷婷在线播放| 黄色在线观看国产| 蜜桃精品一区二区三区| 色吊丝一区二区| 中文字字幕在线中文| 99久久国产综合精品五月天喷水| 亚洲国产成人av网| av福利在线导航| 亚洲一级毛片| 三级资源在线| 丁香婷婷成人| 亚洲精品综合在线观看| 亚洲精品怡红院| 成人av片在线观看| 亚洲精品第一国产综合野草社区| 欧美日韩亚洲第一| 精品久久99ma| 日韩免费一级视频| 六月婷婷色综合| 久久久久久久久伊人| 日本视频中文字幕| 成人美女视频在线观看18| 日本精品免费在线观看| 欧美成人一二三区| 免费一级特黄特色毛片久久看| 国产一区二区三区四| 国产精品乱子乱xxxx| 欧美精品九九99久久| 日本中文字幕在线看| 国产毛片欧美毛片久久久| 亚洲成人自拍视频| 久久网福利资源网站| 日韩电视剧在线观看免费网站| 午夜少妇久久久久久久久| 图片区小说区区亚洲影院| 亚洲成人久久影院| 丁香亚洲综合激情啪啪综合| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 91香蕉视频在线观看视频| 香蕉久久久久久久| 一本大道久久加勒比香蕉| 自由的xxxx在线视频| 99国产**精品****| 成人在线一级片| 刘亦菲毛片一区二区三区| 99在线观看视频| 国产乱国产乱老熟300部视频| 成人一对一视频| 日韩精品一区二区亚洲av观看| 亚洲综合精品国产一区二区三区| 久久精品99久久香蕉国产色戒| 欧美日韩极品在线观看一区| 黄色资源网久久资源365| 欧美在线影院| 国产精品国产三级国产三级人妇| 911亚洲精品| 岛国片av在线| 一本色道久久综合亚洲精品小说| 欧美国产97人人爽人人喊| 成人黄色一级视频| 丝袜诱惑制服诱惑色一区在线观看| 天天爱天天做天天操| 无码人妻精品一区二区三区夜夜嗨| 古装做爰无遮挡三级聊斋艳谭| 国产盗摄一区二区三区在线| 婷婷亚洲婷婷综合色香五月| 少妇免费毛片久久久久久久久| 亚洲一二三四在线观看| 青青草原国产视频| 日韩福利在线| 天天干天天操天天做| 视频免费一区二区| 一区二区三区日韩欧美精品| 国产成人在线视频网址| 黄页在线免费观看| 国产一区二区三区四区五区六区| 日本我和搜子同居的日子高清在线| 男人天堂资源在线| 嫩草影院官网| 欧美日韩播放| 日韩精品永久网址| 欧美激情1区2区| 僵尸世界大战2 在线播放| 天堂视频免费在线观看| 久久国产精品高清一区二区三区| 国产成人精品777777| 麻豆91在线看| av免费观看不卡| 91黄色免费观看| 337p亚洲精品色噜噜狠狠p| 欧美日韩一区二区综合| 日韩免费影院| 久久久www成人免费无遮挡大片| 亚洲男人影院| 欧美一区激情视频在线观看| 777免费视频| 欧美一二三区在线| 北条麻妃国产九九九精品小说| 欧美人动性xxxxz0oz| 亚洲成a人片在线| 国产精品一二二区| 日本亚洲一区| 人妻91麻豆一区二区三区| 六月丁香婷婷综合| www.色.com| 成人在线电影在线观看视频| 性欧美69式xxxxx| 91九色国产在线| 日韩一区二区三区电影在线观看| www婷婷av久久久影片| 操她视频网站| 国产又粗又长又硬| 亚洲一道本在线| 亚洲欧美制服中文字幕| 一区二区三区产品免费精品久久75| 国产极品粉嫩福利姬萌白酱|