【问题标题】:Importing data into a SQL table from a CSV file and considering foreign keys将数据从 CSV 文件导入 SQL 表并考虑外键
【发布时间】:2017-03-18 06:01:26
【问题描述】:

当我必须考虑要向其中导入信息的表与数据库中现有表之间的外键关系时,如何将数据从 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 应该采用不同的格式吗?它应该有额外的列吗?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    评论太长了。

    我的建议是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;
    

    (如果您有其他列或其他考虑因素,这可能过于简单。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 2016-06-09
      • 2012-08-23
      • 2012-05-15
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多