2014-12-20 3 views
5

Я переношу данные из oracle в Mongo DB с помощью python, а при миграции я могу прочитать объект clob с помощью clob.read(), но при вставке в mongo DB он бросает исключение, говорящееPython MongoDB clob exception

Traceback (самый последний вызов последнего): Файл "test.py", строка 39, в db.test234.insert (я) Файл «C: \ python27 \ Lib \ sitepackages \ PyMongo \ collection.py ", строка 409, вставить gen(), check_keys, self.uuid_subtype, client)
InvalidStringData: строки в документах должны быть действительными UTF-8: 'Драйвер вредоносных атак \ r \ n
----------------------- \ г \ п \ г \ п

Это усилие (вредоносный драйвер атаки), содержащий процедур оболочки, чтобы предоставить инфраструктуру тестового сценария для запуска различных инструментов атаки, сканеров уязвимостей, таких как хакерские инструменты. Целью является предоставление общих API-интерфейсов для всех протоколов, которые могут запускать атаку/тестирование с удаленного устройства.

'REVIEW_DESCRIPTION', type 'cx_Oracle.CLOB', -1, 4000, 0, 0, 0 

проверил многие форумы и переполнение стека, не удалось найти точное решение вопроса, пытались варианты, как кодирующая данные CLOB, которые все еще брошенную же исключение

+0

Пробовал ли вы кодировать данные в utf-8 с помощью pythom, а затем вставлять его в mongodb? – The6thSense

+0

Попробуйте создать минимальный пример и опубликовать всю информацию (строка для вставки, полный код Python, версия MongoDB и т. Д.). – lumbric

ответ

0

Вам нужно получить данные в UTF8, так вам нужно знать, какая кодировка используется в БД Oracle. Сначала декодируйте, а затем закодируйте до UTF8. Например, если данные записываются в latin1 в БД Oracle:

unicode_representation = oracle_representation.decode('latin1') 
utf8_representation = unicode_representation.encode('utf8') 

Вы должны быть в состоянии хранить utf8_representation прямо сейчас.