вставка огромное количество строк в MySQL

0

Я хочу прочитать из таблицы MSSQL, а затем вставить в таблицу MySQL, но я не смог отформатировать результаты MSSQL, чтобы executemany на них много

    cursor.execute('select * from table') # MSSQL
    rows = cursor.fetchall()
    many_rows = []
    for row in rows:
        many_rows.append((row))
    sql = "insert into mysql.table  VALUES (NULL, %s) on duplicate key update REFCOLUMN=REFCOLUMN" # MYSQL
    mycursor.executemany(sql, many_rows)
    mydb.commit()

это дает Failed executing the operation; Could not process parameters Failed executing the operation; Could not process parameters Первый NULL для столбца идентификатора и% s для остальных 49 столбцов. Он работает с 1 на 1, но требует удаленного подключения

РЕДАКТИРОВАТЬ

мой пример распечатать вывод many_rows:

[
(49 columns' values, all string and separated by comma),
(49 columns' values, all string and separated by comma),
(49 columns' values, all string and separated by comma),
...
]
  • 1
    «Первый NULL для столбца id и% s для других 49 столбцов» Но вы дали только заполнители для 1 [не-ID] столбца .... Сколько строк мы говорим? Можете ли вы привести реальный минимальный воспроизводимый пример ?
  • 0
    @LightnessRacesinOrbit изменил вопрос ..
Показать ещё 3 комментария
Теги:

2 ответа

0

Я смог исправить мою проблему с добавлением данных, как показано ниже:

many_rows.append((list(row)))

-3

Вам нужно иметь переменные вне "", иначе попытайтесь поместить null как varchar в базу данных sql, а null в python равен None. Часто None в sql из python является проблемой, поэтому личное предложение - сделать variable = None и вставить туда переменную, чтобы избежать проблем.

Итак: x = None sql = "insert into mysql.table VALUES("+x+") on duplicate key update REFCOLUMN=REFCOLUMN"

и если это доставляет вам проблемы, поместите "" в str() так:

sql = str("insert into mysql.table  VALUES("+x+") on duplicate key update REFCOLUMN=REFCOLUMN")'

Кроме того, вы не определили %s поэтому я понятия не имею, что вы пытаетесь поместить туда, но я бы предложил либо использовать версию {}.format(variable) чтобы поместить ее в строку, либо определить переменную и попробовать ее так, чтобы путь :)

Надеюсь это поможет! (и надеюсь, что я прав и не трачу свое время!)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню