0

我正在尝试将 csv 文件(由 40 个标题和 4000 行组成)转换为 sql 数据库服务器中的表。我在某处读到,我可以用 2 行简单地做到这一点:

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][ODBC Driver 13 for SQL Server][SQL Server]无效对象名称“sqlite_master”。(208)(SQLExecDirectW);[42S02][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无法准备语句。(8180)“)

显然,我没有正确定义 conn 。但我不知道如何纠正它。

4

1 回答 1

0

DataFrame.to_sql 文档中所述,第二个参数 ( 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作为第二个参数传递给 pandas 的to_sql方法。

于 2018-11-05T17:10:47.023 回答