最初の 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列を明示的に指定し、COPY
bigserials列を無視してください。