使用django将数据从csv文件添加到数据库

时间:2017-08-21 13:55:59

标签: python django csv

我有Django模型如下:

class TraxioRelations(models.Model):
    corgemeente = models.CharField(max_length=100, null=True)
    coradres = models.CharField(max_length=255, null=True)
    corhuisnr = models.CharField(max_length=10, null=True, blank=True)

该模型使用id在数据库中创建一个表,如下所示: enter image description here

现在我想将csv文件中的记录添加到该模型中。 csv文件如下:

enter image description here

我使用copy命令如下:

COPY master_traxiorelations(corgemeente, coradres, corhuisnr)
FROM '/path/to/file.csv' CSV HEADER delimiter ';' encoding 'ISO-8859-1';

当我执行它时,我收到如下错误:

[2017-08-21 15:50:49] [22P04] ERROR: extra data after last expected column

但是当我添加idcopy命令时,COPY master_traxiorelations(id, corgemeente, coradres, corhuisnr)

csv文件:

enter image description here

然后它工作正常。

如何将数据从文件添加到数据库,而无需将id添加到copy命令和csv文件?

1 个答案:

答案 0 :(得分:0)

我解决了将id添加到模型中的问题,如下所示:

id = models.AutoField(primary_key=True)

添加id = models.AutoField(primary_key=True)可以自动增加id。因此我的模型看起来像:

 class TraxioRelations(models.Model):
    id = models.AutoField(primary_key=True)
    corgemeente = models.CharField(max_length=100, null=True)
    coradres = models.CharField(max_length=255, null=True)
    corhuisnr = models.CharField(max_length=10, null=True, blank=True)

然后copy命令无法在csv文件中添加id列。

COPY master_traxiorelations(corgemeente, coradres, corhuisnr)
FROM '/path/to/file.csv' CSV HEADER delimiter ';' encoding 'ISO-8859-1';

希望如果其他人遇到同样的问题,这会有所帮助。