0

pyodbcSAS ODBC ドライバーを使用して、Python を使用して SAS データセットの読み取りと書き込みを行っています。データを完全にロードできますが、データを保存するときは、次のようなものを使用します。

cursor.execute('insert into dataset.test VALUES (?)', u'testing')

...pyodbc.Error: ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)')エラーが発生します。

問題は、私がユニコード文字列を渡しているという事実にあるようです。これを処理するために何をする必要がありますか?

4

2 に答える 2

1

データベースが期待している文字エンコーディングを知っていますか? その場合は、クエリを実行する前に Unicode 文字列をエンコードしてみてください。したがって、データベースが utf-8 文字列を想定している場合は、次のように試すことができます。

encoding = 'utf-8' # or latin1 or cp1252 or something
s = u'testing'.encode(encoding)
cursor.execute('insert into dataset.test VALUES (?)', s)
于 2010-05-24T21:42:37.147 に答える
0

「データを完全にロードできます」と言います...これは、プラットフォームで使用されているネイティブエンコーディング(おそらくWindowsではcp1252ですが、確認してください)にない文字を含むデータをロードできることを意味しますか?SASデータセットの最初の列のSASデータ型は何ですか?

SASドキュメントのこの記事は、SASデータセットで使用されているエンコーディングを見つける方法を示すことを目的としています。

エンコーディングについてSASODBCのドキュメントに記載されています。ただし、SAS ODBC(つまり、SAS以外のデータにアクセスするSAS言語スクリプト)を使用していないようです。

于 2010-05-24T23:09:12.200 に答える