2017-10-05 39 views
0

我想將pdf作爲blob從sql服務器移動到hbase。當我使用pypyodbc來檢索blob時,它正在轉換它的格式。在SQL Server中,它看起來像停止從SQL Server轉換Blob的Python

0x255044462D312E

但是當我拉入UNIX服務器pypyodbc它轉換爲

%PDF-1.5 %▒▒▒▒

有沒有辦法來防止這種情況發生,並讓二進制文件保留其原始形式?

pypy電話是:

sql_conn = pypyodbc.connect("DRIVER={ODBC Driver 13 for SQL Server};SERVER="+server+";UID="+user+";PWD="+passwrd+";DATABASE=DB") 
cursor = sql_conn.cursor() 
cursor.execute("SELECT Id,IMG_DESCRIPTION,binary FROM [DB].[dbo].[DB] WHERE Id IN "+join_list) 
return cursor.fetchall() 

更新:

它看起來像它的Latin-1解碼,但是當我嘗試移動它,它被蟒蛇編碼SQL服務器。它看起來像ascii是Python的默認值。我需要防止這種情況發生或將其編碼回來。

回答

0

我發現了一個解決這個問題的方法,並認爲我會分享。

他們的方式python 2.7是建立它試圖通過將任何二進制字符串轉換爲ascii有幫助。爲了防止這種情況發生,您可以將您的字段轉換爲SQL本身的字符串以防止轉換。您也可以在開始時切斷'0x',以確保它不被識別爲二​​進制字符串。

我的固定電話

cursor.execute("SELECT Id,IMG_DESCRIPTION,convert(varchar(max),binary,2) FROM [DB].[dbo].[DB] WHERE Id IN "+join_list)