[英]Python to SQL Server Insert
我正在尝试按照将Panda数据框插入到此处提到的SQL Server的方法,因为它似乎是导入大量行的最快方法。
但是我正在努力搞清楚连接参数。 我没有使用DSN,我有一个服务器名称,一个数据库名称,并使用可信连接(即Windows登录)。
import sqlalchemy
import urllib
server = 'MYServer'
db = 'MyDB'
cxn_str = "DRIVER={SQL Server Native Client 11.0};SERVER=" + server +",1433;DATABASE="+db+";Trusted_Connection='Yes'"
#cxn_str = "Trusted_Connection='Yes',Driver='{ODBC Driver 13 for SQL Server}',Server="+server+",Database="+db
params = urllib.parse.quote_plus(cxn_str)
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
conn = engine.connect().connection
cursor = conn.cursor()
我只是不确定指定连接字符串的正确方法是什么。 有什么建议么?
我一直在使用pandas和SQL服务器一段时间,我发现在表中插入大量数据的最快方式就是这样:
您可以使用以下方法创建临时CSV:
df.to_csv('new_file_name.csv', sep=',', encoding='utf-8')
然后使用pyobdc
和BULK INSERT
Transact-SQL:
import pyodbc
conn = pyodbc.connect(DRIVER='{SQL Server}', Server='server_name', Database='Database_name', trusted_connection='yes')
cur = conn.cursor()
cur.execute("""BULK INSERT table_name
FROM 'C:\\Users\\folders path\\new_file_name.csv'
WITH
(
CODEPAGE = 'ACP',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)""")
conn.commit()
cur.close()
conn.close()
然后你可以删除文件:
import os
os.remove('new_file_name.csv')
这是第二次将大量数据一次性收费到SQL Server中。 我希望这会给你一个想法。
注意:不要忘记为索引指定一个字段。 当我开始使用这个大声笑时,这是我的错误。
连接字符串参数值不应括在引号中,因此您应使用Trusted_Connection=Yes
而不是Trusted_Connection='Yes'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.