0

我想将文件“save.csv”的数据导入我的 actian PSQL 数据库表“new_table”,但出现错误

ProgrammingError: ('42000', "[42000] [PSQL][ODBC Client Interface][LNA][PSQL][SQL Engine]Syntax Error: INSERT INTO 'new_table'<< ??? >> ('name','address','city') VALUES (%s,%s,%s) (0) (SQLPrepare)")

下面是我的代码:

   connection = 'Driver={Pervasive ODBC Interface};server=localhost;DBQ=DEMODATA'
   db = pyodbc.connect(connection)
   c=db.cursor()
    #create table i.e new_table

    csv = pd.read_csv(r"C:\Users\user\Desktop\save.csv")
    for row in csv.iterrows():
        insert_command = """INSERT INTO new_table(name,address,city) VALUES (row['name'],row['address'],row['city'])"""
        c.execute(insert_command)
        c.commit()




4

2 回答 2

0

我也尝试过同样的方法,在我的情况下创建了表,我只想使用 Actian PSQL 将 pandas 数据帧中的每一行插入到数据库中

于 2020-02-05T13:33:56.953 回答
0

Pandas 有一个内置函数,可以将 pandas-dataframe 清空到名为pd.to_sql()的 sql-database 中。这可能是您正在寻找的。使用它,您不必一次手动插入一行,但您可以一次插入整个数据框。

如果您想继续使用您的方法,问题可能是尚未在数据库中创建表“new_table”。因此,您首先需要这样的东西:

CREATE TABLE new_table 
( 
Name [nvarchar](100) NULL, 
Address [nvarchar](100) NULL, 
City [nvarchar](100) NULL
)

编辑:您可以像这样在数据库中已经存在的表上使用 to_sql() :

df.to_sql(
        "new_table",
        schema="name_of_the_schema",
        con=c.session.connection(),
        if_exists="append", # <--- This will append an already existing table
        chunksize=10000,
        index=False,
    )
于 2020-02-05T11:31:50.710 回答