【发布时间】:2018-01-18 08:57:56
【问题描述】:
I want to insert data from a CSV file into a PostgreSQL table. The table
结构如下。但我无法输入 INTEGER 类型的值。 它显示错误,例如- DataError:整数的无效输入语法:“vendor_phone” 第 1 行:...vendor_phone,vendor_address)VALUES ('vendor_name','vendor_ph...
如果我使用 VARCHAR 类型,它工作正常。但我需要使用整数值。
CREATE TABLE vendors (
vendor_id SERIAL PRIMARY KEY,
vendor_name VARCHAR(100) NOT NULL,
vendor_phone INTEGER,
vendor_address VARCHAR(255) NOT NULL
)
import psycopg2
import csv
database = psycopg2.connect (database = "supplier", user="postgres", password="1234", host="localhost", port="5432")
cursor = database.cursor()
vendor_data = csv.reader(open('vendors.csv'),delimiter=',')
for row in vendor_data:
cursor.execute("INSERT INTO vendors (vendor_name,vendor_phone,vendor_address)"\
"VALUES (%s,%s,%s)",
row)
print("CSV data imported")
cursor.close()
database.commit()
database.close()
【问题讨论】:
-
仔细查看错误信息,它说您插入的单词“vendor_phone”显然不是一个整数。听起来您有一个需要跳过的标题行。
-
参考此链接.. 可能对您有帮助... (1) stackoverflow.com/questions/2987433/… (2)stackoverflow.com/questions/19400173/…
-
我需要输入一个整数值....此外,我的代码还有一些部分-- header = next(vendor_data) rows = [header] + [[row[0], int(row[1]), row[2]] for row in vendor_data] for row in rows: cursor.execute("INSERT INTO vendor (vendor_name,vendor_phone,vendor_address)"\ "VALUES (%s,%??, %s)", 行)
标签: python postgresql csv integer psycopg2