2015-11-23 31 views
5

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を使用するとうまくいかないことが奇妙に思えます。

+0

私はpypyodbcを使用して、問題を再作成することができました:私のVARCHARからのテキストの私の9386文字(MAX)列が2047の文字に切り捨てられました。 pypyodbcの代わりにpyodbcを使用した場合、まったく同じPythonコードが完全な文字列を返しました。 –

+0

@GordThompsonご意見ありがとうございます。私は最近、pypyodbcの代わりにpyodbcを使用しようとしましたが、何らかの理由でデータセットを完全に返すことができませんでした。問題は無関係なものが原因かもしれませんが、pyodbcを試した直後に解決策を見つけました。私はpyodbcのアイデアを破棄しました。私はしばらく時間があれば、pyodbcをテストとして完全に実装しようとします。そうすれば、この問題に遭遇する可能性がある他の人に私の発見を投稿することができます。私の他の解決法がそれらのために働かない場合には。再度、感謝します! –

答えて

6

まあ、問題は解決しました。このリンクはPythonではなく、同様の問題に関するもので、SQL Serverのネイティブクライアントドライバに問題があることがわかりました。代わりにSQL Serverの標準ドライバを使用することを推奨しました。

私はODBC接続文字列をSQL Server Native Client 11.0からSQL Serverに変更しました。これは完全に動作しています!私はMSSQLデータテーブルのVARCHAR(MAX)列の内容全体を取得しています。

この問題に遭遇した他の人にとっては、これが役立つことが本当にうかがいます。がんばろう!ここで

がリンクである: http://www.sqlservercentral.com/Forums/Topic1534163-391-1.aspx

1

私は前にこの問題を見てきたので、FreeTDSを使用していると仮定しています。あなたのfreetds.confファイルで、[グローバル]の下の可能性:

[global] 
text size = 64512 

SQL Serverのバージョンによっては、これを変更します。

[global] 
text size = 4294967295 

あなたはまた、それをあなたのいずれかを変更する必要がありますDSN。

これが問題でない場合は、さらに情報が必要です:LinuxまたはWindowsから接続していますか?どのバージョンのSQL Server?どのドライバを使用して接続していますか?

+0

私はそれが問題だとは思わない、それは私がLinuxを使っている場合にのみ当てはまるのではないか?私はWindowsマシンから接続しています。それはSQL Server 2014です。これは私のODBC接続に使用しているドライバです。「SQL Server Native Client 11.0」です。 –

+0

pypyodbcコネクタのテキストサイズ属性を変更するのと同じ方法がありますか? –

+0

ああ、その場合は適用されません。あなたはあなたがWindows上にいるとは言わなかったので、私は前にこの問題が起きているのを見ていたので、「私はあなたがFreeTDSを使っていると仮定しています。あなたはあなたの質問を修正することができます:あなたはWindowsと(バージョンと32対64)、SQL Serverバージョン(と32対64)、Pythonバージョン(と32対64)、pypyodbcバージョン、およびドライバ?その情報は間違いなく助けになるでしょう。 – FlipperPA

関連する問題