2
LONG RAW列を持つ従来のデータベースがあります。この列に格納されるデータは約100KBです。 私はこれらのバイナリデータにcx_Oracleでアクセスしようとしています。cx_OracleでLONG RAWを読み取る
私が抽出できる最大サイズは〜41KBです!ここで
は(http://dbaportal.eu/?q=node/147から)私のコードです
cursor = db.cursor()
cursor.arraysize = 1
cursor.setoutputsize(1200000000)
cursor.execute("select data from mytable")
print cursor.description
for row in cursor:
data = row[0]
f = open("/tmp/data",'wb')
f.write(data)
f.close()
# Only first line
break
出力は次のようである:
$ python oracle.py
[('GRIB', <type 'cx_Oracle.LONG_BINARY'>, -1, 0, 0, 0, 1)]
$ ls -lh /tmp/data
41186 2011-01-20 12:42 /tmp/pygrib
私はLONG RAW
が対処することは容易ではありません知っています。いくつかのメソッドは、BLOB
カラムを持つ新しいテーブルを再作成するよう指示します。しかし、私はすでにこの形式のデータのギガを持っているので、私はそれを買う余裕がありません...
何か考えですか?
私は好奇心 - なぜこの 'cursor.setoutputsize(1200000000)'?リンクされたコードでは違うのが分かります。 – Tshepang
デフォルト値では機能しませんでしたので、値を増やそうとしました... –
'dbms_lob'でオンザフライで' blob'に変換しましたか? – Ben