Viac na
Importovanie súboru CSV do servera SQL Server
Hľadám pomoc na importovanie súboru .csv
do SQL Servera pomocou BULK INSERT
a mám niekoľko základných otázok.
Problémy:
-
Údaje v súbore CSV môžu mať medzi sebou
,
(čiarku) (napr.: popis), takže ako môžem vykonať import, ktorý tieto údaje spracuje? -
Ak klient vytvorí CSV z Excelu, potom sú údaje, ktoré majú čiarku, uzavreté v
""
(dvojitých úvodzovkách) [ako je uvedené v nasledujúcom príklade], takže ako si s tým môže import poradiť? -
Ako môžeme sledovať, či niektoré riadky majú zlé údaje, ktoré import preskočí? (či import preskočí riadky, ktoré sa nedajú importovať)
Tu je vzor CSV s hlavičkou:
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.
A príkaz SQL na import:
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
Import CSV na základe servera SQL Server
Riešenie
Ak používate
,
(čiarku) ako oddeľovač, potom neexistuje spôsob, ako rozlíšiť čiarku ako ukončovač poľa a čiarku v údajoch. Použil by som inýFIELDTERMINATOR
, napríklad||
. Kód by vyzeral takto a tento bude dokonale spracovávať čiarku a jednoduché lomítko.Riešenie
Ak'používate BULK insert, potom neexistuje spôsob, ako spracovať dvojité úvodzovky, údaje budú vložené s dvojitými úvodzovkami do riadkov. Po vložení údajov do tabuľky by ste mohli tieto dvojité úvodzovky nahradiť pomocou '` `'.
Riešenie
Na ošetrenie riadkov, ktoré sa do tabuľky nenačítajú z dôvodu neplatných údajov alebo formátu, by sa mohlo spracovať pomocou vlastnosti ERRORFILE, zadajte názov chybového súboru, zapíše riadky Kód by mal vyzerať takto.
Najlepší, najrýchlejší a najjednoduchší spôsob, ako vyriešiť problém s čiarkou v údajoch, je použiť program Excel na uloženie súboru oddeleného čiarkou po nastavení oddeľovača zoznamu systému Windows na niečo iné ako čiarka (napríklad fajku). Tým sa vytvorí súbor oddelený čiarkou (alebo iným spôsobom), ktorý potom môžete importovať. Tento postup je popísaný tu.
Najprv je potrebné importovať súbor CSV do tabuľky údajov
Potom môžete vložiť hromadné riadky pomocou SQLBulkCopy