簡體   English   中英

將數據從CSV文件導入SQL表並考慮外鍵

[英]Importing data into a SQL table from a CSV file and considering foreign keys

當我必須考慮將信息導入到的表與數據庫中已存在的表之間的外鍵關系時,如何從CSV文件將數據導入SQL表?

我有兩張桌子:

CREATE TABLE project_info (
    project_id SERIAL PRIMARY KEY;
    project_accountnum int,
    name text
);

CREATE TABLE project_forecast  (
    forecast_id SERIAL PRIMARY KEY,
    project_id int REFERENCES project_info (project_id),
    forecast_amount int
);

我有一個CSV文件,其中包含項目名稱及其各自的預測。 將項目名稱放在project_forecast表中是多余的,因為它始終是相同的 - 因此是外鍵引用。 但是,我想使用COPY FROM功能上傳CSV,但如何考慮外鍵呢? CSV應該采用不同的格式嗎? 它應該有額外的列嗎?

這個評論太長了。

我的建議是copy到臨時表中。 然后,您可以從登台表加載最終表。 查詢看起來像這樣:

with i as (
      insert into project_info(projectname)
          select distinct projectname
          from project_forecast_staging
          returning *
     ),
insert into project_forecast (project_id, forecast_amount)
    select i.project_id, pfs.forecast_amount
    from project_forecast_staging pfs join
         i
         on pfs.projectname = i.projectname;

(如果您有其他列或其他注意事項,這可能會過於簡單。)

暫無
暫無

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

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