web-dev-qa-db-ja.com

値が欠落しているテーブルをインポートするにはどうすればよいですか?

私はバスケットボールのデータテーブルを使用して、Postgres9.2とphppgadminをある程度理解しています。したがって、csvテーブルをそのデータベースにインポートしたいと思います。しかし、私は得ます:

ERROR:  missing data for column "year"
CONTEXT:  COPY coaches, line 1: ""coachid";"year";"yr_order";"firstname";"lastname";"season_win";"season_loss";"playoff_win";"playoff..."

コマンド付き:

\copy coaches FROM '/Users/Desktop/Database/NBAPostGres/DataOriginal/coaches_data.csv' DELIMITER ',' CSV;

現在のテーブルに欠落はありません。だから私の質問は:

  1. 何が間違っていて、値が欠落しているテーブルを使用している場合はどうなりますか?

  2. そのようなテーブルをインポートする方法、またはそのような構造を一般的に処理する方法(欠落している値に関しても)?

データ構造:

 coachid    year    yr_order    firstname   lastname    season_win
 HAMBLFR01  204        2          Frank     Hamblen         10
 RUSSEJO01  1946       1          John      Russell         22

私が使用した:

 varchar     integer   integer  character    character     integer
11
user3833190

テーブル全体の列が欠落している可能性があります。 COPY(またはpsqlラッパー\copyこれらの列のみを埋めて、テーブルに列リストを追加します。例:

\copy coaches (coachid, yr_order, firstname)
FROM '/Users/.../coaches_data.csv' (FORMAT csv, HEADER, DELIMITER ',');

欠落している値は、列のデフォルトで埋められます。 ドキュメントごと

テーブルに列リストにない列がある場合は、COPY FROMはそれらの列のデフォルト値を挿入します。

しかし、cannotは、一部の行の値が欠落しています。それは可能ではありません。 NULLのテキスト表現を使用できます(それぞれの列のデフォルトを上書きします)。

それはすべてマニュアルにあります、本当に:

23

エラー:列 "year"のデータがありませんコンテキスト:COPYコーチ、1行目: "" coachid ";" year ";" yr_order ";" firstname ";" lastname ";" season_win ";" season_loss ";" playoff_win "; "プレーオフ..."

このタイプのエラーは、テーブルの不一致の結果でもあります。テキストファイルをインポートするテーブルには、テキストファイルよりも多くの列または少ない列があります。

1
Timal Mangra