如何使用python

时间:2019-10-22 10:12:46

标签: python django excel postgresql pycharm

我正在尝试使用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..."```

2 个答案:

答案 0 :(得分:0)

从错误文本(missing data for column)来看,us_arrays表中的列数似乎与CSV文件中的列数不匹配。您还可以在调用columns时使用copy_from关键字属性来指定应从文件中填充的数据库表列。进一步了解here

常见的情况是,数据库表具有3列,例如idnumdata,以及一个只有两列numdata的CSV文件。如果不指定columns,则copy_from函数会将CSV文件中的num导入到id数据库列中,将data导入到num中,不会有任何数据要导入到data数据库列中。

答案 1 :(得分:0)

您的问题被标记为Django,所以我认为您想导入链接到Model的内容。

我将详细说明如何加快this response中的XL加载 现在,如果性能不成问题(您的数据集不太大,并且没有FK),则只需使用Django Import Export

将mixins添加到管理员中,您无需担心文件转换,并且在加载文件时会给您diff