Python3 ODB C Выполнить много - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь скопировать данные из таблицы 1 oracle в другую в другой схеме, используя библиотеку python odb c. Вот что я делаю

source = SomeString (source Oracle DataTable) target = SomeString (target Oracle DataTable)

Подключение к источнику данных для получения данных: source_data = pyodbc.connect(source) source_cursor = source_data.cursor()

Подключиться к целевому источнику данных target = pyodbc(target) target_cursor = target.cursor()

Теперь я объявляю свой запрос исходных данных source_query = SELECT * FROM TABLE where TYPE = X

Я помещаю данные в фрейм данных, а затем конвертирую их в список data = pd.read_sql(source_query, source) data = data.values.tolist()

Теперь я пытаюсь вставить данные из моего списка «данных» в мою целевую таблицу. Я объявляю оператор вставки, а затем запускаю executemany следующим образом:

sql = "INSERT INTO SCHEMA.TABLE (column1, column 2, etc...) Values (?,?, etc..)

Теперь, когда у меня установлены мои данные и целевое соединение, я выполняю следующее target_cursor.executemany(sql, data)

Я получаю следующую ошибку ниже, и странная часть заключается в том, что код правильно вставил 1 строку в новую таблицу, а затем он не работает, и ничего не происходит.

Не могли бы вы посоветовать мне, как это исправить?

Я получаю следующую ошибку:

C:\WinPy3770x64\python-3.7.7.amd64\lib\encodings\utf_16_le.py in decode(input, errors)
     15 def decode(input, errors='strict'):
---> 16     return codecs.utf_16_le_decode(input, errors, True)
     17 

UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 184-185: illegal encoding

The above exception was the direct cause of the following exception:
SystemError                               Traceback (most recent call last)
<ipython-input-70-ec2d225d6132> in <module>
----> 1 target_cursor.executemany(sql_statement, data)

SystemError: <class 'pyodbc.Error'> returned a result with an error set
...