Python cx_Oracle, загружающий CSV с помощью executemany (), выдает «Обязательный аргумент« параметры »(поз. 2) не найден» - PullRequest
1 голос
/ 31 мая 2019

Мое намерение состоит в том, чтобы загрузить файл csv в таблицу Oracle, используя Python.

  1. Я усекаю таблицу, если данные уже существуют - это работает
  2. Я проверяю счет для целей тестирования - это работает
  3. Я пытаюсь вставить данные из файла в Oracle. Я получаю вопрос:

    'Обязательный аргумент' параметры '(поз. 2) не найден'

Код:

import cx_Oracle
import pandas as pd 

column_names = 
['Col1','Col2','Col3','Col4','Col5','Col6','Col7','Col8','Col9']
df = pd.read_csv(r"C:\Users\file.dat", names=column_names, sep='|')

dsn_tns = cx_Oracle.makedsn('*', '*', sid='*') 
conn = cx_Oracle.connect(user='*', password='*', dsn=*) 
c = conn.cursor()
c.execute('Truncate table Table_Name')
c.execute('select count(1) from Table_Name')
for row in c:
print(row)        
for lines in df:
c = conn.cursor()
print("I want to print lines")
res = c.executemany("""Insert into Code_Extract (OPERATION,
                 LIST_COUNTRY_ID,LIST_CODE,SOURCE_SYSTEM_CODE,CODE_USUAL,
                   INT_LIST_CODE,INT_MDM_CODE,CODE_STATUS,MDM_CODE) 
                   Values(df['col1'],df['Col2'],df['Col3'],df['Col4'],df['Col5'],df['Col6'],df['Col7'],df['Col8'],df['Col9'])""")
conn.commit()
c.execute('select count(1) from Table_Name')
for row in c:
    print(row)
c.close()
conn.commit()
conn.close()

Я ожидаю, что всякий раз, когда я получаю файлы, они должны автоматически загружаться в Oracle по указанному пути.

1 Ответ

0 голосов
/ 01 июня 2019

Параметры для executemany () действительно обязательны.См. документацию для получения дополнительной информации.

Вы поместили параметры в SQL, но вместо этого они должны быть указаны как переменные связывания, как в values (:1, :2, :3, :4, :5, :6, :7, :8, :9).Затем вы передадите данные в виде списка последовательностей в executemany ().Надеюсь, это понятно!Вы можете увидеть пример здесь .

...