事前に行の数/タイプがわからないので、次のようにすることをお勧めします:
- (1)CSVを分割せずに単一のテキスト列を持つ(一時的な?)テーブルにインポートします。
backspace
を使用する インポートされた行全体がそのまま残るように、区切り文字としての文字。
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
- (2)CSVをテキスト配列に分割する
クエリを実行します。 -関数
parse_csv
、次に、結果のテキスト配列のセットを関連するものとして使用します(「実際の」ターゲットテーブルにマップ/挿入する場合があります)
WITH rawdata AS
(
SELECT parse_csv(rawtext) arr FROM rawtext_t
)
INSERT INTO real_t (...fields...)
SELECT arr[1], arr[3], ...
FROM rawdata;
TRUNCATE TABLE rawtext_t;
WHERE
を追加できます 2番目のSELECT
の句 必要に応じて着信行をフィルタリングするためのステートメント。
別のオプション -私の理解では非常に良いものです-優れた
これがあなたにアイデアと助けを与えることを願っています。