Vairāk
CSV faila importēšana SQL Serverī
Es meklēju palīdzību, lai importētu .csv
failu SQL Serverī, izmantojot BULK INSERT
, un man ir daži pamatjautājumi.
Problēmas:
-
CSV faila datos var būt
,
(komats) (piem.: apraksts), tāpēc kā es varu veikt šo datu importēšanu? -
Ja klients izveido CSV failu no Excel, tad dati, kuros ir komats, ir ietverti
""
(dubultās pēdiņās) [kā tālāk dotajā piemērā], tad kā importēt, lai to apstrādātu? -
Kā izsekot, vai dažās rindās ir slikti dati, kurus imports izlaiž? (vai imports izlaiž rindas, kuras nav importējamas)?
Šeit ir CSV paraugs ar galveni:
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.
Un SQL paziņojums importēšanai:
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
Pamatojoties uz SQL Server CSV importēšanu
risinājums
Ja kā norobežotāju izmantojat
,
(komatu), tad nav iespējams atšķirt komatu kā lauka terminatoru no komata jūsu datos. Es izmantotu cituFIELDTERMINATORU
, piemēram,||
. Kods izskatītos šādi, un tas lieliski apstrādās komatu un vienu slīpsvītru.risinājums
Ja izmantojat BULK insert, tad nav iespējams apstrādāt dubultās pēdiņas, dati būs rindās tiks iestarpināti ar dubultajām pēdiņām. Pēc datu ievietošanas tabulā jūs varētu aizstāt šīs dubultās pēdiņas ar '` `'.
risinājums
Lai apstrādātu rindas, kas netiek ielādētas tabulā nederīgu datu vai formāta dēļ, varētu būt šādi apstrādāt, izmantojot ERRORFILE īpašību, norādiet kļūdas faila nosaukumu, tas ierakstīs rindas. kods izskatās šādi.
Labākais, ātrākais un vienkāršākais veids, kā atrisināt komatu datu atdalīšanas problēmu, ir izmantot Excel, lai saglabātu ar komatu atdalītu failu pēc tam, kad ir iestatīts Windows' saraksta atdalītāja iestatījums, kas nav komats (piemēram, caurule). Tādējādi tiks izveidots ar cauruli (vai jebkuru citu elementu) atdalīts fails, kuru pēc tam varēsiet importēt. Tas ir aprakstīts šeit.
Vispirms jums ir nepieciešams importēt CSV failu datu tabulā.
Pēc tam varat ievietot masveida rindas, izmantojot SQLBulkCopy