シリアル列の入力中にCSVデータをコピーする

シリアル列の入力中にCSVデータをコピーする

最初の postgres テーブルを作成し、数字 1 で始まり、数 (たとえば 1) に上がる列 1 (ID) にシリアル番号を生成している間に .csv ファイルをテーブルにコピーする方法を見つけようとしています。 、2、3等行あたり)。私は次のコマンドを使用しました。

COPY sales_table FROM '/home/perl_experiments/xmlcsv.txt' (DELIMITER('|'));

これはcsvの内容をコピーしようとしますが、.csvの最初のデータ列をテーブルの最初の列に入れるようです。テーブルの最初の列をbigserialとして指定し、列が自動的に入力され、csvの内容が列1をバイパスし、列2からテーブルを埋め始めると仮定しました。明らかに、それは真実ではなく、重要なステップを逃しました。私が逃したステップを誰かが明らかにすることができますか?私が作成したテーブルを要約すると、次のようになります。

Column  Type   Not Null  Default        
ID      bigint NOT NULL  nextval('"sales_table_Entry        Id_seq"'::regclass)     [pk]        

ProdNo  bigint  

Title   character varying   

url     character varying   

Price   integer     

ベストアンサー1

COPYコマンドを入力する個々の列を指定できます。

COPY table_name [ ( column [, ...] ) ]
    FROM { 'filename' | STDIN }
    [ [ WITH ] ( option [, ...] ) ]

http://www.postgresql.org/docs/9.1/static/sql-copy.html)

したがって、CSV列を明示的に指定し、COPYbigserials列を無視してください。

おすすめ記事