繁体   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