0

我正在尝试使用已转换为 .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解决了同样的问题,但给出的答案是错误意味着“你试图在一个不是整数的整数字段中输入一些东西......”,但我的数据模型没有任何整数字段,所以我不知道如何解决这个问题。

任何人都可以提出可能导致问题的原因吗?

4

1 回答 1

2

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

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

前任:

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

其中“标题”是标签表中我要更新的唯一列。

于 2013-06-10T17:57:32.753 回答