使用Postgres COPY命令的多对多关系

2024-10-03 11:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在运行PostgresCOPY命令时,是否可以包含多对多关系?如果是的话,你能给我举个例子吗?在

例如:

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文件,我想把datasingleraceid的信息和我想附加的lap对象的id的列表。我想附加的lap对象的数量是可变的。在

这个SQL是用Django框架创建的。我想把它保存在Django框架中,这样我就不想更改SQL了。导入数据的速度非常慢,所以我正在努力提高导入数据的速度。在


Tags: 对象keyidcreatetableserialnotinteger
1条回答
网友
1楼 · 发布于 2024-10-03 11:23:16

您可以使用COPY来提高导入批量数据的速度—我通常不会使用它—您是否隔离了瓶颈?你在抄袭什么?您需要一些类似CSV文件的结构与表相同。。在

COPY直接复制到PostgreSQL它与Django无关,因此您需要使用pgsql或任何您使用的工具与Postgres交互。您的命令如下所示:

COPY datasinglerace FROM datasinglerace.csv;
COPY datasinglerace_Laps FROM datasinglerace_Laps.csv;

COPY有许多选项请参见documentation。在

请注意,任何被其他对象引用的内容都需要首先添加,否则您需要放松(删除然后再添加)引用约束。在这种情况下,您需要COPYdatasinglerace_Laps最后,这样它已经存在了引用

相关问题 更多 >