Читайте LONG RAW с помощью cx_Oracle - PullRequest
2 голосов
/ 20 января 2011

У меня есть устаревшая база данных с колонками LONG RAW.Данные, хранящиеся в этих столбцах, составляют около ~ 100 КБ.Я пытаюсь получить доступ к этим двоичным данным с помощью 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Но я не могу себе этого позволить, потому что у меня уже есть гигабайты данных в этом формате ...

Есть идеи?

1 Ответ

0 голосов
/ 08 февраля 2018

Вы можете создать глобальную временную таблицу со столбцом BLOB, а затем непосредственно перед получением значения LONG RAW вставить ее в эту таблицу, используя функцию преобразования TO_LOB.Затем вы можете выбрать значение BLOB из временной таблицы.

...