我想要将文件"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()发布于 2020-02-05 19:31:51
Pandas有一个内置的函数,可以将pandas-dataframe清空到名为pd.to_sql()的sql数据库中。这可能就是你要找的。使用这种方法,您不必一次手动插入一行,但您可以一次插入整个数据帧。
如果您想继续使用您的方法,问题可能是数据库中还没有创建表"new_table“。因此,你首先需要这样的东西:
CREATE TABLE new_table
(
Name [nvarchar](100) NULL,
Address [nvarchar](100) NULL,
City [nvarchar](100) NULL
)EDIT:您可以对数据库中已存在的表使用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-05 21:33:57
我已经尝试了相同的方法,在我的例子中创建了表,我只想使用Actian PSQL将pandas dataframe中的每一行插入到数据库中
https://stackoverflow.com/questions/60074339
复制相似问题