Я перемещаю данные из MySQL в MSSQL, но у меня есть проблема с вставкой в оператор, когда у меня есть значение.
для экспорта я использовал следующий код:
import pymssql
import mysql.connector
conn = pymssql.connect(host='XXX', user='XXX',
password='XXX', database='XXX')
sqlcursor = conn.cursor()
cnx = mysql.connector.connect(user='root',password='XXX',
database='XXX')
cursor = cnx.cursor()
sql= "SELECT Max(ID) FROM XXX;"
cursor.execute(sql)
row=cursor.fetchall()
maxID = str(row)
maxID = maxID.replace("[(", "")
maxID = maxID.replace(",)]", "")
AMAX = int(maxID)
LC = 1
while LC <= AMAX:
LCC = str(LC)
sql= "SELECT * FROM XX where ID ='"+ LCC +"'"
cursor.execute(sql)
result = cursor.fetchall()
data = str(result)
data = data.replace("[(","")
data = data.replace(")]","")
data = data.replace("None","NULL")
#print(row)
si = "insert into [XXX].[dbo].[XXX] select " + data
#print(si)
#sys.exit("stop")
try:
sqlcursor.execute(si)
conn.commit()
except Exception:
print("-----------------------")
print(si)
LC = LC + 1
print('Import done | total count:', LC)
Он работает нормально, пока я не "в одном из моих значений:
'N', '0000000000', **"test string nice company"**
Я хотел бы избежать вовлечения данных в столбцы, а затем проверить, есть ли "в данных", поскольку моя таблица содержит около 500 полей.
Есть ли разумный способ заменить "на"?
Ответ:
Добавлен SET QUOTED_IDENTIFIER OFF для вставки инструкции:
si = "SET QUOTED_IDENTIFIER OFF insert into [TechAdv].[dbo].[aem_data_copy]
select " + data
В MSSQL вы можете SET QUOTED_IDENTIFIER OFF
, тогда вы можете использовать двойные кавычки, чтобы избежать одиночной цитаты, или использовать две одинарные кавычки, чтобы избежать одной цитаты.