如何使用python将csv数据导入postgres数据库

如何使用python将csv数据导入postgres数据库,python,django,excel,postgresql,pycharm,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:\\Us

我正在尝试使用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()
从错误文本(
缺少列的数据
)判断,
us\u数组
表中的列数似乎与CSV文件中的列数不匹配。在调用
copy\u from
时,也可以使用
columns
关键字属性来指定应从文件中填充的数据库表列。阅读更多关于它的信息

常见的情况是,数据库表有3列,例如
id
num
data
,而CSV文件只有2列
num
data
。如果不指定
copy_from
函数将
num
从CSV文件导入
id
数据库列,
数据
导入
num
,并且根据错误文本判断,将没有数据可导入
数据
数据库列。

<(
缺少列的数据
),似乎
us\u数组
表中的列数与CSV文件中的列数不匹配。在调用
copy\u from
时,您还可以使用
columns
关键字属性来指定应从文件中填充的数据库表列。有关详细信息,请阅读


一种常见的情况是,数据库表有3列,例如
id
num
data
,CSV文件只有2列
num
data
。如果不指定
copy\u from
函数将
num
从CSV文件导入
id
数据库列,<代码>数据< /代码>进入代码> Num < /代码>,将没有数据导入到“代码>数据< /代码>数据库列。

< p>您的问题被标记为django,因此我认为您想导入与<代码>型号链接的东西。

我详细解释了如何在中加速XL加载 现在,如果性能不是问题(您的数据集不是太大,并且没有FKs),您可以简单地使用


在您的管理员中添加MIXIN,您将不必担心文件转换,当加载文件

时,将给您<代码>差异>代码>,您的问题被标记为django,因此我将考虑导入与“代码>型号链接的链接。

我详细解释了如何在中加速XL加载 现在,如果性能不是问题(您的数据集不是太大,并且没有FKs),您可以简单地使用


将mixin添加到你的管理员中,你就不必为文件转换操心了,在加载文件时会给你
diff
,欢迎使用SO。你能提供这个CSV文件的示例吗?这可能会帮助其他人重现你的错误。Header,Header,Header,(这大约有22列),value,value,value,value,,,,,,,,,,,,,value,value,value我想,额外的空格也会被考虑,并且会放置一个delimeter。当导入到数据库时,甚至会考虑额外的逗号,最后一些列会丢失值。我不确定是否是这样。欢迎使用。您还可以提供一个示例吗这个CSV文件?可能会帮助其他人重现你的错误。头,头,头,(这大约有22列),value,value,value,value,,,,,,,,,,,value,value,value我想,额外的空格也会被考虑,并且会放置一个delimeter。当导入到数据库时,甚至会考虑额外的逗号,最后一些列会丢失值。我不确定是否是这样。
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..."```