質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

PostgreSQLテーブルにCSVファイルをインポートできません。(psql バージョン 9.2)

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 474

score 23

PostgreSQLテーブルにCSVファイルをインポートしようと思っていますが、以下のエラーが出て、インポートできません。自分でもいろいろ調べてやってみますがどれも解決には至りませんでした。

practice=> \copy material_master from material_master_201911.csv WITH CSV;
ERROR:  missing data for column "no_name5"  (seg0 moore-PC87-2017.localdomain:50000 pid=3920)
CONTEXT:  COPY material_master, line 62914: "62914,2017/3/22,19050006,付せん紙 フィルム インデックス ,家柄,付せん紙 フィル..."

試したこと

missing data for column no_name5とあったので、その付近のCSVデータを見て、データがおかしくないか調べてみましたが特におかしいところもありませんでした。
以下の質問も参考にしましたが、解決しませんでした。
https://teratail.com/questions/179516

62914行目付近のCSV

62914,2017/3/22,19050006,付せん紙 フィルム インデックス ,家柄,付せん紙 フィルム インデックス 家柄,,1309,付せん紙,13,ノート・メモ,する,製品,でない,1,パック,200,35,0,4902810000000 ,A,,通常,,1,1,0,0,1847,齋藤 俊,である,でない,しない,しない,しない,0,,,,,,,,,,,380,しない,190,する,課売上,5,,50,する,2017/7/19,2017/7/19,である,でない,でない,でない,1701,吉田 真由美,,,392,"1,000.00",1736,田中 風実,2017/3/22 13:22,1984,,2019/12/4 9:45

テーブル構造

practice=> \d material_master1
                                                   テーブル "public.material_master1"
                    列                    |             型              |                            修飾語
------------------------------------------+-----------------------------+---------------------------------------------------------------
 no                                       | bigint                      | not null default nextval('material_master1_no_seq'::regclass)
 application_start_date                   | date                        |
 item_code                                | integer                     |
 item                                     | text                        |
 standard                                 | text                        |
 product_name_formal                      | text                        |
 standard_formal                          | text                        |
 minor_classification                     | integer                     |
 minor_category_name                      | character varying(20)       |
 medium_classification_code               | integer                     |
 middle_class_name                        | character varying(15)       |
 payment_category                         | character varying(3)        |
 product_name_classification              | character varying(3)        |
 miscellaneous_code_classification        | character varying(3)        |
 quantity                                 | numeric                     |
 unit                                     | character varying(3)        |
 capacity                                 | numeric                     |
 weight                                   | numeric                     |
 output_order                             | integer                     |
 jan_code                                 | bigint                      |
 ab_classification                        | character varying(1)        |
 copyright_code                           | character varying(2)        |
 character_code                           | character varying(2)        |
 table_calculation_category               | character varying(2)        |
 mold_code                                | integer                     |
 plastic_weight                           | numeric                     |
 paper_weight                             | numeric                     |
 manufacturing_royalties                  | numeric                     |
 sales_royalties                          | numeric                     |
 assignee_code                            | integer                     |
 no_name1                                 | text                        |
 production_suspension_classification     | character varying(3)        |
 disused_edition_classification           | character varying(3)        |
 production_date_management_category      | character varying(3)        |
 expiration_date_management_category      | character varying(3)        |
 lot_management_indicator                 | character varying(3)        |
 automatic_journal_pattern_classification | integer                     |
 manufacturer_code                        | integer                     |
 no_name2                                 | text                        |
 purchase_type                            | integer                     |
 purchase_price                           | numeric                     |
 purchase_unit_price                      | numeric                     |
 unit_price_change_category               | character varying(3)        |
 tax_classification1                      | character varying(3)        |
 scheduling_management_classification     | character varying(8)        |
 minimum_order_quantity                   | numeric                     |
 order_unit                               | numeric                     |
 conversion_value_at_delivery             | numeric                     |
 standard_retail_price                    | integer                     |
 hide_at_retail_price_slip                | character varying(3)        |
 standard_sales_unit_price                | numeric                     |
 unit_price_change_category2              | character varying(3)        |
 tax_classification2                      | character varying(3)        |
 minimum_shipment_quantity                | integer                     |
 cost_ratio                               | character varying(1)        |
 rate                                     | numeric                     |
 change_rate_indicator                    | character varying(3)        |
 release_date                             | date                        |
 shipping_start_date                      | date                        |
 input_prohibited                         | character varying(3)        |
 no_reservation                           | character varying(3)        |
 prohibition_of_allocation                | character varying(3)        |
 shipment_stop                            | character varying(3)        |
 charge_p1                                | integer                     |
 no_name3                                 | character varying(10)       |
 charge_p2                                | integer                     |
 no_name4                                 | text                        |
 country_of_origin                        | integer                     |
 carton_quantity                          | numeric                     |
 lead_time                                | integer                     |
 registered_employee_code                 | integer                     |
 no_name5                                 | character varying(10)       |
 registered_date                          | timestamp without time zone |
 last_updated_employee_code               | integer                     |
 no_name6                                 | character varying(10)       |
 last_modified                            | timestamp without time zone |
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2020/01/27 10:59

    カラムの数と入れようとしているデータの数が合っているか確認してみてください。エラーからするとそれっぽいです

    キャンセル

  • amura

    2020/01/27 11:41 編集

    CSV QUOTE '"'を付けてみたらどうでしょうか? ”の前にバックスラッシュいるかも
    訂正です、V9.2はQUOTE指定無くても大丈夫でした。

    キャンセル

  • amura

    2020/01/27 12:13

    ご提示されたエラーデータのカラム数は73で、テーブルは76と違いますが

    キャンセル

回答 1

0

テーブルの項目数と、CSVの項目数が合っていないのです。

エラーメッセージは、no_name5以降に該当するCSVの項目が無いと云っています。

CSVの内容をテーブルの項目に対比させて状況を確認して下さい。

CSVの項目の方が少ないようですので、

COPY テーブル名(カラム名、、、) from ファイル名

のように、テーブルの項目を限定すれば良いと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/27 12:32 編集

    そのまま質問者さんが、全角空白とか入った状態でコピペして使うことはないと思いたいけど、
    念の為ドキュメント( https://www.postgresql.jp/document/9.2/html/app-psql.html )から貼っておきますね。
    \copy { table [ ( column_list ) ] | ( query ) } { from | to } { 'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [ with ] ( option [, ...] ) ]
    の、column_list の箇所に、使用するカラム名を","区切りで列挙します。

    キャンセル

  • 2020/01/27 12:35

    @m6uさん
    フォローありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る