Impor CSV SQL Server Berbasis
1) Data file CSV mungkin memiliki
,
(koma) di antara (Misalnya:deskripsi), jadi bagaimana saya bisa membuat impor menangani data ini?
Solusi
Jika Anda menggunakan ,
(koma) sebagai pembatas, maka tidak ada cara untuk membedakan antara koma sebagai terminator bidang dan koma dalam data Anda. Saya akan menggunakan FIELDTERMINATOR
yang berbeda seperti ||
. Kode akan terlihat seperti ini dan ini akan menangani koma dan garis miring dengan sempurna.
2) Jika klien membuat csv dari excel maka data yang memiliki koma diapit dalam
" ... "
(tanda kutip ganda) [sebagai contoh di bawah] jadi bagaimana impor dapat menangani ini?
Solusi
Jika Anda menggunakan sisipan BULK maka tidak ada cara untuk menangani tanda kutip ganda, data akan disisipkan dengan tanda kutip ganda ke dalam baris. Setelah memasukkan data ke dalam tabel, Anda dapat mengganti tanda kutip ganda tersebut dengan ' '.
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3) Bagaimana kami melacak jika beberapa baris memiliki data yang buruk, yang mana yang melewati impor? (apakah mengimpor melewati baris yang tidak dapat diimpor)?
Solusi
Untuk menangani baris yang tidak dimuat ke tabel karena data atau format yang tidak valid, dapat ditangani menggunakan properti ERRORFILE, tentukan nama file kesalahan, itu akan menulis kesalahan baris ke file kesalahan. kode akan terlihat seperti.
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
TABLOCK
)