Jika bidang terakhir Anda selalu ada (meskipun trailing nullcols
menyarankan tidak) dan Anda memiliki kendali atas pemformatan, Anda dapat menggunakan CONTINUEIF
direktif untuk memperlakukan baris kedua sebagai bagian dari catatan logis yang sama.
Jika comments
bidang selalu ada dan diapit dalam tanda kutip ganda maka Anda dapat melakukan:
...
truncate
continueif last != x'22'
into table ...
Yang akan menangani catatan data seperti:
S;Y;"Test 1"
F;N;"Test 2"
P;Y;"Test with
new line"
P;N;""
Atau jika Anda selalu memiliki pembatas setelah kolom komentar, apakah diisi atau tidak:
...
truncate
continueif last != ';'
into table ...
Yang akan menangani:
S;Y;Test 1;
F;N;"Test 2";
P;Y;Test with
new line;
P;N;;
Kedua cara akan memuat data sebagai:
S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test withnew line
P N
Tapi ini kehilangan baris baru dari data. Untuk menjaganya, Anda memerlukan pembatas bidang pengakhiran untuk hadir, dan alih-alih CONTINUEIF
Anda dapat mengubah pemisah rekaman menggunakan format rekaman streaming
:
...
infile 'C:\Users\lab.csv' "str ';\n'"
truncate
into table ...
"str ';\n'"
mendefinisikan terminator sebagai kombinasi terminator bidang dan karakter baris baru. Komentar terpisah Anda hanya memiliki kombinasi itu di baris terakhir. Dengan file data yang sama dengan versi sebelumnya, ini memberikan:
S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test with
new line
P N
4 rows selected.
Karena Anda menggunakan Windows, Anda mungkin harus menyertakan \r
dalam format juga, mis. "str ';\r\n'"
, tapi saya tidak bisa memeriksanya.