1

pyodbc モジュールを使用して Apache Drill に接続する python スクリプトを作成しようとしています。ドリルに正常に接続できますが、クエリを実行しようとすると、文字エンコーディングに関係しているように見える奇妙なエラーが発生します。以下にコードを添付しました。Python 3.4 を使用しています。Pandas を使用して、または使用せずにこれを試してみたところ、同じエラーが発生したことを付け加えておく必要があります。そのため、エラーは ODBC のどこかにあると思いますが、ODBC の経験はありません。

import pyodbc
import pandas as pd

MY_DSN = "DRIVER=/opt/mapr/drillodbc/lib/universal/libmaprdrillodbc.dylib;Host=localhost;Port=31010;ConnectionType=Direct;Catalog=Drill;Schema=mfs.views;AuthenticationType=No Authentication"
conn = pyodbc.connect(MY_DSN, autocommit=True)
employee_query = "SELECT * FROM cp.`employee.json`"
data = pd.read_sql( employee_query, conn )

エラーは次のとおりです。

エラー トレースバック (最新の呼び出しが最後) //anaconda/lib/python3.4/site-packages/pandas/io/sql.py in execute(self, *args, **kwargs) 1471 else: -> 1472 cur.execute (*引数) 1473 return cur

エラー: ('HY000', '[HY000] [MapR][Drill] (1040) ドリルはクエリの実行に失敗しました: ��������������\n[30027]クエリの実行エラー。詳細:[ \n解析エラー: 行 1、列 1 の字句エラー。検出: "\ufffd" (65533)、後: ""\n\n\n[エラー ID: 669ea9b9-34d6-4281-8898- 57e8d0 (1040) (SQLExecDirectW)')

4

2 に答える 2

0

エンコーディングを utf-i6 に変更すると、.mapr.drillodbc.iniこの問題が修正されました。

[Driver]
DriverManagerEncoding=UTF-16
于 2015-08-11T20:08:39.773 に答える
0

私の問題は、デフォルトの unixODBC ドライバーのビルドにありました。ソースhttps://code.google.com/p/odbc/wiki/InstallingUnixODBCから unixODBC ドライバーをインストールすると、すべてが機能しました。docker はまもなく投稿されます。

于 2015-12-18T23:55:01.233 に答える