运行Postgres COPY
命令时是否可以包含多对多关系?如果是这样,你能举个例子吗?
例如:
CREATE TABLE "lap" (
"id" serial NOT NULL PRIMARY KEY,
"Lap_number" integer,
"Lap_time" interval,
)
;
CREATE TABLE "datasinglerace_Laps" (
"id" serial NOT NULL PRIMARY KEY,
"datasinglerace_id" integer NOT NULL,
"lap_id" integer NOT NULL REFERENCES "lap" ("id") DEFERRABLE INITIALLY DEFERRED,
UNIQUE ("datasinglerace_id", "lap_id")
)
;
CREATE TABLE "datasinglerace" (
"id" serial NOT NULL PRIMARY KEY,
"Notes" text,
)
;
ALTER TABLE "datasinglerace_Laps" ADD CONSTRAINT "datasinglerace_id_refs_id_620382df" FOREIGN KEY ("datasinglerace_id")
REFERENCES "datasinglerace" ("id") DEFERRABLE INITIALLY DEFERRED;
圈数对象已经在数据库中。对于COPY
文件,我想提供datasinglerace
id
的信息以及我要附加的圈数对象id
的列表。我想要附加可变数量的圈对象。
此SQL是使用Django框架创建的。我想在Django框架中保留它,所以我不想更改SQL。导入数据的速度非常慢,因此我正在努力提高导入数据的速度。
答案 0 :(得分:0)
您可以使用COPY
来提高一次性导入批量数据的速度 - 我不会正常使用它 - 您是否已将瓶颈隔离?你在复制什么?您需要具有与表格相同结构的CSV文件。
COPY
直接复制到PostgreSQL它与Django无关,所以你需要使用pgsql或你使用的任何工具与Postgres进行交互。您的命令将如下所示:
COPY datasinglerace FROM datasinglerace.csv;
COPY datasinglerace_Laps FROM datasinglerace_Laps.csv;
COPY
有很多选项,请参阅documentation。
请注意,首先需要添加其他内容引用的内容,否则您需要放松(删除然后添加回)您的引用约束。在这种情况下,您需要最后COPY
datasinglerace_Laps,以便它已经存在的引用