私はバスケットボールのデータテーブルを使用して、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;
現在のテーブルに欠落はありません。だから私の質問は:
何が間違っていて、値が欠落しているテーブルを使用している場合はどうなりますか?
そのようなテーブルをインポートする方法、またはそのような構造を一般的に処理する方法(欠落している値に関しても)?
データ構造:
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
テーブル全体の列が欠落している可能性があります。 COPY
(またはpsqlラッパー\copy
)これらの列のみを埋めて、テーブルに列リストを追加します。例:
\copy coaches (coachid, yr_order, firstname)
FROM '/Users/.../coaches_data.csv' (FORMAT csv, HEADER, DELIMITER ',');
欠落している値は、列のデフォルトで埋められます。 ドキュメントごと :
テーブルに列リストにない列がある場合は、
COPY FROM
はそれらの列のデフォルト値を挿入します。
しかし、cannotは、一部の行の値が欠落しています。それは可能ではありません。 NULL
のテキスト表現を使用できます(それぞれの列のデフォルトを上書きします)。
それはすべてマニュアルにあります、本当に:
エラー:列 "year"のデータがありませんコンテキスト:COPYコーチ、1行目: "" coachid ";" year ";" yr_order ";" firstname ";" lastname ";" season_win ";" season_loss ";" playoff_win "; "プレーオフ..."
このタイプのエラーは、テーブルの不一致の結果でもあります。テキストファイルをインポートするテーブルには、テキストファイルよりも多くの列または少ない列があります。