我已经得到了下面的表格,其中translation
是空的,我试图填补:如何从其它表填充表的外键
translation {
id
translated
language_id
template_id
}
language {
id
langname
langcode
}
template {
id
tplname
source
domain
total
}
源数据来填充translation
是一个临时的我已经从外部CSV文件填充表:
tmp_table {
id
translated
langname
tplname
source
domain
}
我想要做的是填补translation
与值从tmp_table
。该translated
场可以直接复制,但我不太清楚如何获取正确的language_id
(tmp_table.langname可以用来确定language.id)和template_id
(tmp_table.tplname,tmp_table.source,tmp_table.domain可以一起用于确定template.id)。
这可能是一个微不足道的问题,但我很新的SQL和不知道的最好的查询应该是填充translation
表什么。有任何想法吗?
谢谢!不过,我对索引部分不太清楚。从Django模型生成的目标表,从pgadmin3看着它,它看起来像它得到了在每个外键索引创建(如:'CREATE INDEX translation_language_id的翻译使用的B树(LANGUAGE_ID);') - 你的意思是,在为了提高插入操作的性能,我应该在插入查询之前删除所有这些索引,然后用相同的'CREATE INDEX [']查询再次生成它们中的每一个? – 2012-02-26 18:11:29
@DavidPlanella:的确如此。这也是安全的,因为查询的性质遵守外键规则。如果您担心并发操作,请在一次事务中完成所有操作。如果您不确定这会更快,只需在数据库副本中运行测试即可。 [EXPLAIN ANALYSE](http://www.postgresql.org/docs/current/interactive/sql-explain.html)可用于计时。 – 2012-02-27 11:34:00