+-

我试图了解 python如何将数据从FTP服务器提取到pandas然后将其移动到SQL服务器.我的代码至少可以说是非常简陋的,我正在寻找任何建议或帮助.我试图从FTP服务器首先加载数据工作正常….如果我然后删除此代码并将其更改为从ms sql服务器中选择它是好的,所以连接字符串工作,但插入到SQL服务器似乎造成了问题.
import pyodbc
import pandas
from ftplib import FTP
from StringIO import StringIO
import csv
ftp = FTP ('ftp.xyz.com','user','pass' )
ftp.set_pasv(True)
r = StringIO()
ftp.retrbinary('filname.csv', r.write)
pandas.read_table (r.getvalue(), delimiter=',')
connStr = ('DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=TESTFEED;UID=sa;PWD=pass')
conn = pyodbc.connect(connStr)
cursor = conn.cursor()
cursor.execute("INSERT INTO dbo.tblImport(Startdt, Enddt, x,y,z,)" "VALUES (x,x,x,x,x,x,x,x,x,x.x,x)")
cursor.close()
conn.commit()
conn.close()
print"Script has successfully run!"
当我删除ftp代码时,它运行得很完美,但是我不明白如何进行下一次跳转以将其转换为Microsoft SQL服务器,或者即使可以先将其保存到文件中也是如此.
最佳答案
对于’write to sql server’部分,您可以使用方便的pandas to_sql方法(因此无需迭代行并手动执行插入).请参阅有关使用pandas: http://pandas.pydata.org/pandas-docs/stable/io.html#io-sql与SQL数据库交互的文档
你需要至少pandas 0.14来使这个工作,你还需要安装sqlalchemy.一个例子,假设df是你从read_table得到的DataFrame:
import sqlalchemy
import pyodbc
engine = sqlalchemy.create_engine("mssql+pyodbc://<username>:<password>@<dsnname>")
# write the DataFrame to a table in the sql database
df.to_sql("table_name", engine)
另见documentation page of to_sql.
有关如何使用pyobdc为sql server创建sqlalchemy连接引擎的更多信息,可以在这里找到:http://docs.sqlalchemy.org/en/rel_1_1/dialects/mssql.html#dialect-mssql-pyodbc-connect
但是,如果您的目标是将csv数据放入SQL数据库,您还可以考虑直接从SQL执行此操作.参见例如Import CSV file into SQL Server
点击查看更多相关文章
转载注明原文:python – 使用PYODBC从pandas获取数据到SQL服务器 - 乐贴网