我有一个包含LONG RAW列的旧数据库。存储在此列中的数据大约为~100KB。 我正在尝试使用cx_Oracle访问这些二进制数据。
它正在工作,但我能提取的最大尺寸是 ~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
列的新表。但我买不起,因为我已经有了这种格式的数据......
有什么想法吗?
答案 0 :(得分:0)
您可以使用BLOB
列创建一个全局临时表,然后在获取LONG RAW
值之前使用TO_LOB
转换函数将其插入此表中。然后,您可以从临时表中选择BLOB
值。