使用python在SQL Server中快速插入数据

使用python在SQL Server中快速插入数据,python,sql-server,pandas,performance,insertion,Python,Sql Server,Pandas,Performance,Insertion,我想将CSV文件中的数据插入Azure上托管的SQL Server数据库。我能够通过将数据读入pandas数据帧并在python的for循环中使用insert语句在表中插入数据。我正在使用pyodbc。这种方法需要很长时间才能插入数据。我还尝试了pd.to\u sql()。虽然后者比for-loop方法快,但仍然很慢 有没有更快的方法可以使用python/pandas在SQL Server中插入CSV文件?使用线程,这样每个线程都可以插入到数据库中。这个人提供了一个很好的例子,他有一个很好的例子

我想将CSV文件中的数据插入Azure上托管的SQL Server数据库。我能够通过将数据读入pandas数据帧并在python的for循环中使用insert语句在表中插入数据。我正在使用
pyodbc
。这种方法需要很长时间才能插入数据。我还尝试了
pd.to\u sql()
。虽然后者比for-loop方法快,但仍然很慢


有没有更快的方法可以使用python/pandas在SQL Server中插入CSV文件?

使用线程,这样每个线程都可以插入到数据库中。这个人提供了一个很好的例子,他有一个很好的例子。看看这个

看看代码的这一部分,他在那里启动指向插入函数的线程

def rnd_用户(num=1000001,threadid=1):
query=u“在imdb.employees(fname,lname,hired,job_code,store_id)中插入值(‘%(fname)s’、‘%(lname)s’、‘%(hired)s’、‘%(jobcode)s’、‘%(storeid)s’)
cnx=mysql.connector.connect(**dbconfig)
cnx.autocommit=True
cursor=cnx.cursor()
定义日期():
返回时间.strftime(%Y-%m-%d),(random.randrange(20002016),random.randrange(1,12),random.randrange(1,28),0,0,0,0,1,-1))
对于范围内的x(num):
如果未关闭\u事件。是否设置了\u():
fname=genstring(3,9)
lname=genstring(4,12)
租用=rnd_日期()
jobcode=genstring(3,3).upper()
storeid=random.randrange(1,20)
execute(查询%{u'fname':fname,u'lname':lname,u'hired':hired,u'jobcode':jobcode,u'storeid':storeid})
如果x%1000==0:
打印“[%2d]插入的%d行”%(线程ID,x)
cnx.close()
... (更多代码)。。。
对于范围(8)内的x:
t=threading.Thread(target=rnd\u用户,args=(125000,threadId,)
t、 开始()

谢谢@Rodrigo Loza。我将尝试这种方法