Hvordan velge fra en CSV-fil i SQL

Hvordan velge fra en CSV-fil i SQL


Overføre tupler av data mellom to forskjellige databasesystemer skjer vanligvis gjennom automatisering, med forhåndsskrevne rutiner (eller skript) som utfører under off-peak timer. Av og til må du manuelt legge inn informasjon, vanligvis fra en pensjonert eller uforenlig system. Disse engangsunntaksforespørsler er generelt ikke verdt innsatsen for å sette opp i automatiserte skript. Du kan importere (og eksport) til tabellene i databasen gjennom generisk, kommaseparert (CSV) filer ved hjelp av bcp.exe verktøyet kommandoen som følger med MS SQL Server eller ved hjelp av Bulk Sett uttalelsen, som disse trinnene adresse, eller OpenRowSet uttalelse.

Bruksanvisning

1 Velg databasen ved hjelp av følgende kode (erstatte prøvenavnet med databasenavn):

BRUK trackedatabase

2 Skriv Bulk Sett utsagn for å sette inn CSV-fil data:

BULK

SETT trackingdata

Fra 'c: \ morenames.csv'

MED

(FIELDTERMINATOR = ',', ROWTERMINATOR = '\ n', TABLOCK)

3 Test resultatene:

SELECT * FROM trackingdata

Hint

  • "I SQL Server 2005 og nyere versjoner, håndhever BULK INSERT nye datavaliderings og datakontroller som kan føre til eksisterende skript for å mislykkes når de kjøres på ugyldige data i en datafil", ifølge Microsoft Developers Network.
  • Omgi banen til CSV-fil med enkle anførselstegn [ ']. Trinn 2 bruker "c: \, 'rotkatalogen på en PC, bare som et eksempel, din sti kan inneholde andre stasjoner eller kataloger.
  • Vurder å bruke TABLOCK selv om prosessen vil fungere uten. Alltid ha hele tabellen i enkeltbrukermodus når du gjør endringer i mer enn én rad.
  • Du kan bruke andre engangs metoder for å importere tekstdata til en MS SQL Server-database, inkludert teknikker som importerer CSV første til MS Excel og deretter laste opp .xls (x) fil til MS SQL Server. Noen ganger for en engangs import finner du dette enklere enn å gå gjennom MS SQL Server Administration panel bare å laste opp noen rader med data.
  • Prøv noe nytt på et testsystem først.
  • Lag en fullstendig sikkerhetskopi av databasen før du prøver å importere alle typer nye data, om du bruker BCP eller Bulk Sett inn eller OpenRowSet.