簡體   English   中英

將批量數據插入到具有一對多關系的表中

[英]Insert bulk data into tables that are in a one to many relationship

我有一個 .NET 應用程序使用 Npgsql 連接到 Postgres 數據庫,我正在嘗試將數據導入兩個表,比如 Users 和 Todos。 一個用戶有很多待辦事項。 User 表有一個由數據庫自動設置的id列,Todos 表有一個指向 Users 表的外鍵,稱為user_id

現在,我知道如何插入用戶,我知道如何插入待辦事項,但我不知道如何為這些待辦事項設置user_id ,因為用戶的id列只有在用戶插入數據庫后才知道。 任何的想法?

這取決於您導入的方式和使用的工具。 如果您使用的是原始 INSERT 語句,PostgreSQL 有一個 RETURNING 子句,它將向您發送回插入語句的 ID(請參閱文檔)。

如果您使用二進制 COPY(這是批量導入數據的最有效方式),則沒有這樣的選項。 在這種情況下,一種好方法是通過遞增支持 ID 列的序列,將所有 ID“分配”到一個 go 中,然后在導入時發送 ID。 這意味着數據庫生成這些 ID 的時間更長了——您像任何其他字段一樣顯式發送它們。

實際上,假設您有 100 個用戶(以及任意數量的待辦事項)。 您可以調用setval以將序列遞增 100,然后您可以導入您的用戶,將他們的 ID 顯式設置為這 100 個值。 這還允許您在待辦事項上指定用戶 ID。 但是,如果您這樣做,請注意並發問題,如果其他人同時修改了序列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM