我正在尝试使用python将excel工作表中的数据导入到postgresql数据库中,当我这样做时,出现以下错误。
我已经将我的excel转换为csv,然后尝试使用'copy'语句将数据导入到postgres数据库中。
import psycopg2
conn = psycopg2.connect("host=localhost dbname=djangotest user=postgres password=*******")
cur = conn.cursor()
with open('C:\\Users\\********\\Desktop\\excelsheet.csv', 'r') as f:
next(f) # Skip the header row.
cur.copy_from(f, 'us_arrays', sep=',')
conn.commit()
psycopg2.errors.BadCopyFileFormat: missing data for column "ip_address_or_service_machine"
CONTEXT: COPY us_arrays, line 1: "(CMDB)",.Device Type,.Frame or Data Tier,.Corp Device,.Encrypt Enabled,.Dedicated Device,".IP Addres..."```
答案 0 :(得分:0)
从错误文本(missing data for column
)来看,us_arrays
表中的列数似乎与CSV文件中的列数不匹配。您还可以在调用columns
时使用copy_from
关键字属性来指定应从文件中填充的数据库表列。进一步了解here。
常见的情况是,数据库表具有3列,例如id
,num
,data
,以及一个只有两列num
和data
的CSV文件。如果不指定columns
,则copy_from
函数会将CSV文件中的num
导入到id
数据库列中,将data
导入到num
中,不会有任何数据要导入到data
数据库列中。
答案 1 :(得分:0)
您的问题被标记为Django,所以我认为您想导入链接到Model
的内容。
我将详细说明如何加快this response中的XL加载 现在,如果性能不成问题(您的数据集不太大,并且没有FK),则只需使用Django Import Export
将mixins添加到管理员中,您无需担心文件转换,并且在加载文件时会给您diff