2017-10-05 9 views
0

SQL Serverからhbaseへのblobとしてpdfsを移動しようとしています。 pypyodbcを使用してBLOBを取得すると、その形式が変換されます。 SQLサーバーでは、PythonのSQL ServerからのBlob変換の停止

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() 

更新:

それはそれはラテン1でデコードが、私は試してみて、それを移動すると、そのはPythonでエンコードされている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) 
関連する問題