2017-03-17 11 views
1

インポートするテーブルと外部キーの関係を考慮する必要がある場合、CSVファイルからSQLテーブルにデータをインポートするにはどうすればよいですか?データベースの既存のテーブル?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ファイルを持っている:

は、私は2つのテーブルを持っています。 project_forecastテーブルにプロジェクト名を持たせることは、常に同じであるため、外部キー参照と同じように冗長になります。しかし、COPY FROM関数を使用してCSVをアップロードしたいのですが、どのように外部キーを考慮に入れますか? CSVは別の形式にする必要がありますか?追加の列が必要ですか?

答えて

0

コメントが長すぎます。

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; 

(あなたは追加の列または他の考慮事項を持っている場合、これはおそらく、単純化しすぎている。)

:クエリは次のようになります
関連する問題