У меня есть ситуация, когда мне нужно вставить более 4000 символов в Oracle VARCHAR, и мне было рекомендовано не использовать CLOB.Предложенное решение состояло в том, чтобы разделить его на 2 столбца, по 4000 и 8000.Я сделал код динамическим, чтобы можно было обрабатывать количество столбцов X для повторного использования.Он работал отлично, проходил тестирование и т. Д., Пока не был развернут, и кто-то скопировал и вставил из продукта Microsoft, и он сломался, потому что в функции было сгенерировано более 4000 байтов.Я не рассматривал юникод.
Я попробовал несколько идей, чтобы решить эту проблему, прежде чем остановиться на одном, где я начинаю с 4000 символов, а если длина байта превышает 4000, удалите символ и снова проверьте длину байта.Это работает, но мне интересно, есть ли лучшее решение.Функция также изменяет имена столбцов с 'column' на 'column1', 'column2', ... и т. Д.
text = data[key]
index = 1
while text:
length = 4000
while len(text[0:length].encode('utf-8')) > 4000:
length -= 1
data['{}{}'.format(key, index)] = text[0:length]
text = text[length:]
index += 1
del data[key]