我试图将csv文件(由40个标头和4000行组成)转换为sql数据库服务器中的表。我读过一个地方,我可以做到两行就这么简单:
df = pandas.read_csv("file.csv")
df.to_sql(tableName, conn)
我试图按照以下方法制作conn:
conn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}; SERVER=servername; DATABASE=testdb; Trusted_Connection=yes')
但是失败了,我得到了这些错误:
DatabaseError:在SQL'SELECT name FROM sqlite_master WHERE type ='table'AND name = ?;'中执行失败:('42S02',“ [42S02] [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server ]无效的对象名称“ sqlite_master”。(208)(SQLExecDirectW); [42S02] [Microsoft] [用于SQL Server的ODBC驱动程序13] [SQL Server]语句无法准备。(8180)“)
显然,我没有正确定义conn。但是我不知道如何纠正它。
答案 0 :(得分:0)
如DataFrame.to_sql documentation中所述,第二个参数(con
)是“ sqlalchemy.engine.Engine或sqlite3.Connection”:
使用SQLAlchemy可以使用该库支持的任何数据库。为sqlite3.Connection对象提供了旧版支持。
因此,您需要将SQLAlchemy添加到项目中,使用其create_engine
方法创建指向您数据库的引擎对象,例如,
from sqlalchemy import create_engine
# ...
your_sql_engine = create_engine('mssql+pyodbc://@your_DSN_name')
,然后将your_sql_engine
作为第二个参数传递给熊猫的to_sql
方法。