CSV dosyasını SQL Server'a aktarma
Bir .csv
dosyasını BULK INSERT
kullanarak SQL Server'a aktarmak için yardım arıyorum ve birkaç temel sorum var.
Sorunlar:
-
CSV dosyası verileri arasında
,
(virgül) olabilir (Örn: açıklama), bu nedenle bu verileri işleyerek içe aktarmayı nasıl yapabilirim? -
Müşteri CSV'yi Excel'den oluşturursa, virgül içeren veriler
""
(çift tırnak) içine alınır [aşağıdaki örnekte olduğu gibi], bu nedenle içe aktarma bunu nasıl işleyebilir? -
Bazı satırlarda içe aktarmanın atladığı kötü veriler olup olmadığını nasıl izleriz? (içe aktarma, içe aktarılamayan satırları atlar mı)
İşte başlığıyla birlikte örnek CSV:
Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.
Ve içe aktarılacak SQL deyimi:
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
TABLOCK
)
168
3
Tabanlı SQL Server CSV İçe Aktarma
Çözüm
Ayırıcı olarak
,
(virgül) kullanıyorsanız, alan sonlandırıcı olarak virgül ile verilerinizdeki virgül arasında ayrım yapmanın bir yolu yoktur. Ben olsam||
gibi farklı birFIELDTERMINATOR
kullanırdım. Kod şöyle görünecektir ve bu virgül ve tek eğik çizgiyi mükemmel bir şekilde işleyecektir.Çözüm
BULK insert kullanıyorsanız, çift tırnak işaretlerini işlemenin bir yolu yoktur, veriler satırlara çift tırnak ile eklenir. Verileri tabloya ekledikten sonra bu çift tırnak işaretlerini '``' ile değiştirebilirsiniz.
Çözüm
Geçersiz veri veya biçim nedeniyle tabloya yüklenmeyen satırları işlemek için ERRORFILE özelliğini]1 kullanarak işleyin, hata dosyası adını belirtin, satırları yazacaktır hata dosyasında hata olması. kod şöyle görünmelidir.
Verilerdeki virgül sorununu çözmenin en iyi, en hızlı ve en kolay yolu, Windows' liste ayırıcı ayarını virgülden başka bir şeye (boru gibi) ayarladıktan sonra virgülle ayrılmış bir dosyayı kaydetmek için Excel'i kullanmaktır. Bu daha sonra sizin için içe aktarabileceğiniz bir boru (veya her neyse) ile ayrılmış dosya oluşturacaktır. Bu burada açıklanmıştır.
İlk olarak CSV dosyasını Veri Tablosuna aktarmanız gerekir
Ardından SQLBulkCopy kullanarak toplu satırlar ekleyebilirsiniz