ODBC接続を使用してMSSQLデータベースに接続するPythonプログラムがあります。私が使用しているPythonライブラリはpypyodbcです。Python pypyodbcでVARCHAR(MAX)列全体を取得する方法
ここ私の設定です:
- のWindows 8.1のx64
- のSQL Server 2014のx64
- のPython 2.7.9150
- PyPyODBC 1.3.3
- ODBCドライバ:SQL Serverネイティブクライアント11.0
私が抱えている問題は、 varchar(max)列では、コンテンツが切り捨てられています。
私はpypyodbcを使い慣れています。私は狂ったように探し回っており、pypyodbcやpyodbcでもこのようなことが起こらないようにする方法は何も見つかりません。少なくとも私が使ってきた検索用語ではないし、他のどのフレーズを試してもわからない。
さらに、SET TEXTSIZE 2147483647;
をSQLクエリに追加しようとしましたが、データはまだ切り詰められています。
これを防ぐにはどうすればよいですか?それとも正しい方向に私を向けることができますか?
UPDATE:
だから、私は私のSQLクエリでキャストを実行してみました。私がするときCAST(my_column as VARCHAR(MAX))
同じ位置で切り詰めます。しかし、私がCAST(my_column as VARCHAR(8000))
を実行すると、それは私に大きなテキストセットを与えますが、それでも内容の一部を切り捨てます。もし私が8000
より大きい何かをしようとすると、私は8000
が私が使用できる最大であると言っているエラーを取得します。誰でもここで何が起こっているのか知っていますか? MAX
を使用するとうまくいかないことが奇妙に思えます。
私はpypyodbcを使用して、問題を再作成することができました:私のVARCHARからのテキストの私の9386文字(MAX)列が2047の文字に切り捨てられました。 pypyodbcの代わりにpyodbcを使用した場合、まったく同じPythonコードが完全な文字列を返しました。 –
@GordThompsonご意見ありがとうございます。私は最近、pypyodbcの代わりにpyodbcを使用しようとしましたが、何らかの理由でデータセットを完全に返すことができませんでした。問題は無関係なものが原因かもしれませんが、pyodbcを試した直後に解決策を見つけました。私はpyodbcのアイデアを破棄しました。私はしばらく時間があれば、pyodbcをテストとして完全に実装しようとします。そうすれば、この問題に遭遇する可能性がある他の人に私の発見を投稿することができます。私の他の解決法がそれらのために働かない場合には。再度、感謝します! –