Minulla on datatiedosto txt-muodossa ja ladoin sen joukkolevyllä seuraavaan komentoon:
Bulk insert [table1] FROM "data.txt" WITH ( FIELDTERMINATOR ="|", ROWTERMINATOR ="0x0a", )
Koodi toimii hyvin. Yritin kuitenkin käyttää tiedostoa joukkotiedoston kanssa tiedostotiedoston lataamiseksi, mutta kohtasin joitain ongelmia määritettäessä viimeisen rivin kenttäterminaalia.
Tässä on määritelmä viimeiselle riville muotoilutiedosto:
21 SQLCHAR 0 20 "0x0a" 21 misc_costs SQL_Latin1_General_CP1_CI_AS
Kun pääte ”0x0a”, saan seuraavan virheen:
Joukkolataustietojen muuntovirhe (katkaisu) riville 2, sarake 1 (var1).
Kohdalla ”\ n” tiedot voidaan olla ladattu, mutta ”|” ladataan myös viimeiseen sarakkeeseen. Esimerkiksi saan ”0,5 |” ”0,5”: n sijaan.
”| \ n”, ”0x0a”, ”| 0x0a”, ”\ r \ n” palauttaa saman virheen kuin ”|”
Joukkolataustiedon muuntovirhe (katkaisu) riville 2, sarake 1 (var1).
I ” m käyttämällä sql-server 2016, Windows 10 64bit.
Voiko kukaan auttaa tässä? Kiitos jo etukäteen avusta!
Jason
Kommentit
- Koska olet ' kysynyt muutamia kysymyksiä siitä nyt, katso tälle sivulle: sommarskog.se/bulkload.html
- @sp_BlitzErik, kiitos vastauksestasi! Artikkeli on erittäin hyödyllinen ja tarjoaa paljon enemmän tietoa kuin MSDN-sivusto. Kun luet esimerkkiä kohdassa 4.1 , Sekaisin kenttäterminatoriin " \ " \ r \ n ", lainaus on huomautus todella täydellinen, onko se tyyppi?
- Jos muistan oikein, se ' on pakosarja. Jos jatkat rea ding siellä ' on parempi selitys jäljempänä.
vastaus
Koko päivän taistellessani rivinvaihto / kuusiokoodilla huomasin lopulta, että ongelmani johtui puuttuvista sarakkeista muotoilutiedostoissa. Aineisto on minulle uusi ja ajattelin, että siinä oli 21 riviä, kun taas siinä on 22 riviä. Siksi sql-palvelin jatkoi viimeisen ”|” -tiedoston lataamista datatiedostosta.
Tässä on viite muille, jotka saattavat olla kiinnostuneita lataamaan datatiedostoja UNIX-järjestelmästä rivinvaihtajilla, jotka poikkeavat Windowsista. menetelmät:
- käytä joukkotiedostoa ja aseta rivin päätteeksi ”0x0a”.
- käytä muotoilutiedostoa ja aseta viimeisen kentän kentän päätteeksi ”\ n ”.
- Lisää dynaaminen sql, jossa on funktio Char (10), lisäämään rivinvaihdon (LF) komentosarjaan ja suorittamaan sitten komentoketjun ().
Ennen kuin kokeilet näitä menetelmiä, näytä kaikki ohjausmerkit muistilehdellä vahvistaaksesi tekstitiedostojen käyttämät ohjausmerkit.
Jos mikään näistä menetelmistä ei toimi sinulle, sinulla voi olla muita ongelmia kuin rivi syötteen / rivin päättäjä.