问题如下:
我在使用python 批量插入csv文件数据进入sql server时遇到这个问题
(pymssql.OperationalError) 8114, b'Error converting data type nvarchar to numeric.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n
经过百度了解到是写入的数据类型和数据库的不匹配,但是我不知道该怎么处理这个问题。有老哥帮忙改改写一下麽?
python代码如下
import pymssql
import pandas as pd
class MSSQL():
def __init__(self):
super(MSSQL, self).__init__()
self.connection = pymssql.connect(host='*******',
user='*******',
password='*******.',
database='*******',
charset='utf8',
autocommit=True)
def insert(self, sql_command):
conn = self.connection
cursor = conn.cursor()
cursor.execute(sql_command)
cursor.close()
conn.close()
def int_business():
# 读取csv,并写入数据库
excel_sheet_0 = pd.read_csv(r'd:\werwer.csv')
field = '日期,订单编号,下单时间,接单时长,店铺名称,店铺ID,店铺所在城市,订单支付类型,订单状态,订单配送状态,是否预订单,' \
'订单总金额,订单折扣后金额,平台承担活动金额,商家承担活动金额,商品分类,商品名称,UPC码,商品SKU码,' \
'商品销售数量,商品原价销售额,商品实付销售额,商品总补贴金额,商品商家补贴金额,商品平台补贴金额,是否部分退款商品,' \
'部分退款商品数量,部分退款商品金额,订单小额付款,配送费,是否活动订单,优惠活动,是否催单,回复状态,商家回复内容,' \
'配送时长,打包袋费,订单完成时间,[订单取消原因(仅取消订单)],归属账号'
sheet_data_np = excel_sheet_0.values
for i in range(0, sheet_data_np.shape[0] + 1, 1000):
sheet_data = sheet_data_np[i:i + 1000, :]
data_str = "'),('".join("','".join(str(j) for j in i.tolist()) for i in sheet_data)
insert_value = f"('{data_str}')".replace("'nan'", "''")
insert_sql = f'begin transaction;insert into meituan_storeorder ({field}) values {insert_value};commit transaction;'
MSSQL().insert(insert_sql)
int_business()