Извлечение данных из базы данных Oracle на Python. Проблемы с многобайтовыми символамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Извлечение данных из базы данных Oracle на Python. Проблемы с многобайтовыми символами

Сообщение Anonymous »

Я пытаюсь получить данные из базы данных Oracle, просто чтобы сохранить их в CSV-файле. Когда я пытаюсь сделать это с кодировкой по умолчанию, я получаю сообщение об ошибке: Кодек 'utf-8' не может декодировать байт 0xd1 в позиции 14: неверный байт продолжения.. Набор символов из базы данных — AL32UTF8, а для национального — AL16UTF8. Некоторые клиенты помещают записи на испанском языке, поэтому некоторые символы – заменяются на и ?.
Я пытался изменить кодировку на ISO-8859-1, и это работает для первых двух запросов, но для остальных я есть ошибка частичный многобайтовый символ. Я также проверяю данные по запросу, а есть ли другие? замены.
Вот мой код (пожалуйста, игнорируйте учетные данные и запросы, я просто ввел несколько случайных значений)
`

Код: Выделить всё

os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'

connection = None
cursor = None

dir = './csv_files/'
queries = {
'file_name.csv': "SELECT * table",
'file_name.csv': "SELECT * FROM table",
}

if not os.path.exists(dir):
os.makedirs(dir)

try:
dsn_tns = cx_Oracle.makedsn('171.11.1.111', '1521', sid='ñññ')
connection = cx_Oracle.connect(user, password, dsn=dsn_tns, encoding='ISO-8859-1')
cursor = connection.cursor()

for file_name, query in queries.items():
try:
cursor.execute(query)
rows = cursor.fetchall()
columns = [col[0] for col in cursor.description]

dataFrame = pd.DataFrame(rows, columns=columns)

file_path = os.path.join(dir, file_name)

dataFrame.to_csv(file_path, index=False, encoding='utf-16', errors= 'replace')

except Exception as e:
print(f"Error in query for {file_name}: {e}")
continue

except Exception as e:
print(f"Error in connection: {e}")

finally:
if cursor is not None and connection is not None:
cursor.close()
`
Как я могу решить эту проблему, не удаляя данные конфликта из базы данных?
Я Пробовал менять кодировку, но ничего не помогает.

Подробнее здесь: https://stackoverflow.com/questions/790 ... tibyte-cha
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»