Karena Anda tidak tahu jumlah/jenis baris di muka, saya sarankan Anda melakukan seperti ini:
- (1) impor CSV Anda ke dalam tabel (sementara?) dengan satu kolom teks tanpa pemisahan. Gunakan
backspace
karakter sebagai pembatas sehingga seluruh baris yang diimpor akan tetap utuh;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
- (2) menjalankan kueri yang membagi CSV menjadi larik teks
- fungsi
parse_csv
, lalu gunakan kumpulan larik teks yang dihasilkan sebagai relevan (mungkin peta/masukkan ke dalam tabel target 'nyata')
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;
Anda dapat menambahkan WHERE
klausa di SELECT
second kedua pernyataan untuk memfilter baris yang masuk jika perlu.
Opsi lain - yang sangat bagus menurut pemahaman saya - adalah menggunakan file_textarray_fdw yang sangat baik untuk efek yang kurang lebih sama.
Semoga ini memberi Anda ide &membantu.