我正在尝试将pdf作为blob从sql server移动到hbase。当我使用pypyodbc来检索blob时,它正在转换它的格式。在SQL Server中它看起来像
0x255044462D312E
但是当我用pypyodbc将它拉入unix服务器时,它被转换为
%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()
更新
它在SQL服务器中看起来像是在Latin-1中解码但是当我尝试移动它时,它被python编码。看起来ascii是python的默认值。我需要防止这种情况发生或将其编码回来。
答案 0 :(得分:0)
我找到了解决这个问题的方法,并认为我会分享。
他们建立了python 2.7,它试图通过将它看到的任何二进制字符串转换为ascii来提供帮助。为防止这种情况发生,您可以将字段转换为SQL本身的字符串以防止转换。您也可以在开始时切断'0x'以确保它不被识别为二进制字符串。
我的固定电话
example.io