1. ホーム
  2. postgresql

[解決済み】csvファイルをpostgresqlにインポートしようとすると、「予想される最後の列の後に余分なデータがある」。

2022-02-12 06:54:08

質問

CSVファイルの内容をpostgresqlのdbにコピーしようとすると、「"extra data after last expected column"」というエラーが発生します。

私のCSVの内容は

    agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
100,RATP (100),http://www.ratp.fr/,CET,,

そして、私のpostgresqlのコマンドは

COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';

以下は私のテーブルです。

CREATE TABLE agency (
    agency_id character varying,
    agency_name character varying NOT NULL,
    agency_url character varying NOT NULL,
    agency_timezone character varying NOT NULL,
    agency_lang character varying,
    agency_phone character varying,
    agency_fare_url character varying
);

     Column      |       Type        | Modifiers 
-----------------+-------------------+-----------
 agency_id       | character varying | 
 agency_name     | character varying | not null
 agency_url      | character varying | not null
 agency_timezone | character varying | not null
 agency_lang     | character varying | 
 agency_phone    | character varying | 
 agency_fare_url | character varying | 

解決方法は?

これで7つのフィールドが揃いました。

CSVの6フィールドをテーブルの6フィールドにマッピングする必要があります。

のように6つのフィールドがあるのに、3つだけマッピングすることはできません。

\COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';

csvファイルのすべてのフィールドは、コピー元コマンドでマッピングされる必要があります。

また、csvを定義しているので , デリミタはデフォルトで入っていますので、入れる必要はありません。