【发布时间】:2015-08-08 00:24:01
【问题描述】:
我有一个包含 4,500,000 行的 CSV 文件,需要导入到我的 django postgres 数据库中。该文件包含关系,因此不像使用 COPY 将 CSV 文件直接导入数据库那么容易。
如果我想直接将其加载到 postgres 中,我可以更改 CSV 文件以匹配数据库表,但我不确定如何获取关系,因为我需要知道插入的 id 才能建立关系.
有没有办法生成将获取最后一个 id 并在以后的语句中使用的 sql 插入?
我最初是使用 django ORM 编写的,但它需要很长时间才能做到这一点,而且它似乎正在放慢速度。我删除了所有索引和约束,所以这不应该是问题。
数据库在我的机器上本地运行。我认为一旦将数据输入数据库,将其转储并重新加载到生产数据库中就不难了。
那么我怎样才能将这些数据以正确的关系存入我的数据库中呢?
请注意,我不懂 JAVA,所以这里建议的答案对我来说不是超级实用:Django with huge mysql database
编辑: 以下是更多详细信息:
我有一个类似这样的模型:
class Person(models.Model):
name = models.CharField(max_length=100)
offices = models.ManyToManyField(Office)
job = models.ForeignKey(Job)
class Office(models.Model):
address = models.CharField(max_length=100)
class Job(models.Model):
title = models.CharField(max_length=100)
所以我有一个人可以有一份工作但有很多办公室。 (我的真实模型有更多字段,但你明白了)。
我的 CSV 文件是这样的:
name,office_1,office_2,job
hailey,"123 test st","222 USA ave.",Programmer
还有更多的领域,但我只包括相关的领域。
所以我需要制作 person 对象和 office 对象并将它们关联起来。工作对象已经创建,所以我需要做的就是找到工作并将其保存为该人的工作。
在此之前原始数据不在数据库中。只有平面文件。我们正在尝试使其具有相关性,以便具有更大的灵活性。
谢谢!!!
【问题讨论】:
标签: python django database postgresql