将.csv文件导入pgsql时出错

时间:2013-06-10 16:38:04

标签: django postgresql

我正在尝试使用我已转换为.csv文件的excel文件将数据上传到我的postgres数据库。我的.csv文件是一个简单的测试文件,它只包含一行数据,所有数据都包含格式为文本的单元格,其标题与我的数据模型中的列相匹配。

我尝试上传数据的数据模型如下:

class Publication(models.Model):
    title = models.CharField(max_length=200)
    journalists = models.ManyToManyField(Journalist, blank=True)
    email = models.EmailField(blank=True)
    tags = models.ManyToManyField(Tag, blank=True, related_name="publications")
    url = models.URLField(blank=True)
    notes = models.CharField(max_length=500, blank=True)
    image_url = models.URLField(blank=True)
    media_kit_url = models.URLField(blank=True)

当我进入psql并输入命令时:

\copy apricot_app_publication from '~/Desktop/sampleDBPubs.csv';

我收到以下错误:

ERROR:  invalid input syntax for integer: "title,url,email,media_kit_url,notes,tags,image_url,journalists" 

CONTEXT:  COPY apricot_app_publication, line 1, column id: "title,url,email,media_kit_url,notes,tags,image_url,journalists"

我查看了这个问题Importing csv file into pgsql,它解决了同样的问题,但给出的答案是错误意味着“你试图将某些东西输入到一个不是整数的整数字段......” ,但我的数据模型没有任何整数字段,所以我不知道如何解决这个问题。

有人可以提出可能导致问题的原因吗?

1 个答案:

答案 0 :(得分:2)

我刚刚回答了我自己的问题。在我的Django应用程序中,在幕后创建了一个自动生成的id列,该列具有多对多的关系。因此,数据库期望从.csv文件添加一个整数,这是id,但我的.csv文件没有id列,我不想添加一个,因为id要继续自动 - 生成。

为了解决这个问题,我只需要在表名后指定我的文件将在括号中提供数据的列:

EX:

\copy apricot_app_tag(title) FROM '~/Desktop/Sample_Database_Files/tags.csv' with csv header

其中'title'是我要更新的标记表中唯一的列。