siDDis Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 (endret) Eg poster dette her, då databaseforumet er heilt dødt. Eg har ein enkel kommaseparert CSV som dette 3081,2014-12-05 10:00:01,9.0100,100,100,10.5000,200,200 5265,2014-12-05 13:53:42,25.9500,6000,6000,30.5800,100,100 4952,2014-12-05 12:36:29,20.4100,100,100,29.2600,100,100 3081,2014-12-05 15:28:01,9.0200,100,100,10.4900,100,100 3397,2014-12-05 13:56:57,0.0100,100,100,199999.9900,100,100 5265,2014-12-05 14:35:44,2.5900,100,100,49.3900,100,100 3081,2014-12-05 15:29:23,9.0200,100,100,10.1000,100,100 4952,2014-12-05 12:39:33,20.4700,100,100,29.2600,100,100 3081,2014-12-05 15:29:53,9.0100,100,100,9.8500,200,200 3397,2014-12-05 14:00:01,15.5000,100,100,199999.9900,100,100 Dette er eksportert frå PostgreSQL og tabellen ser sånn ut: Column | Type | Modifiers -------------------+-----------------------------+----------- stock_id | bigint | time | timestamp without time zone | bid | numeric(19,4) | bid_depth | bigint | bid_depth_total | bigint | offer | numeric(19,4) | offer_depth | bigint | offer_depth_total | bigint | Nå har eg prøvd med SQL Server Import & Export Wizard og Bulk Copy Begge feiler med noko datakonverting dilldall feilmelding som ikkje gir meining. Dato feltet fikk eg til med å bruke datetime2 typen, men disse numeric feltene. Ikkje faen. Eg har prøvd alle datatyper, numeric, decimal, float osv. Men den greier ikkje å importere. Endrer eg feltene til varchar/string, da går det fint. Og då kan eg oppdatere kolonnen etter og "konvertere" på den tradisjonelle måten. Problemet er at disse CSV filene er på fleire TB, og eg gidder ikkje å vente i all evigheit på noko som skulle fungert i første steg. Eg kan aldri hugse eg har slitt så mykje for noko så enkelt, dokumentasjonen for CSV import i SQL Server er jo så dårleg at skulle trudd det var ein 5 åring som hadde skreve det. Så då spør eg dykk, korleis får ein dette skikkeleg til. Dette er jo tross alt noregs mest populære database. Endret 23. februar 2016 av siDDis Lenke til kommentar
andreasn Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Har du prøvd å lage en query for å importere filen? Kanskje den kan gi litt mer forklarende feilmeldinger. https://msdn.microsoft.com/en-us/library/ms188365.aspx Du finner eksempler nederst på siden. Lenke til kommentar
siDDis Skrevet 23. februar 2016 Forfatter Del Skrevet 23. februar 2016 (endret) Jepp, får mapping feilmeldinger. Feilmeldingen babler om noe alignment på kolonne 8. Og feilmeldingen kjem med ein gong. Altså noko er galt med SQL Server sin måte å mappe til riktig type. Andre CSV-import programmer som Pandas eller PostgreSQL har ingen problemer med same fil. Endret 23. februar 2016 av siDDis Lenke til kommentar
quantum Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Eg poster dette her, då databaseforumet er heilt dødt. Ja det er vel fordi ingen poster der? Anbefaler forøvrig å poste feilmeldingene. Lenke til kommentar
andreasn Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Jeg kjørte en kjapp test på dataene dine og dette fungerer fint. CREATE TABLE #temp ( stock_id bigint, tme timestamp, bid numeric (19,4), bid_d bigint, bid_d_t bigint, offer numeric(19,4), offer_d bigint, offer_d_t bigint) BULK INSERT #temp FROM 'd:\test.txt' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); Lenke til kommentar
Emancipate Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Dette er jo tross alt noregs mest populære database.Kanskje den tror at komma er desimalseparator. Lenke til kommentar
andreasn Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 [ code ] kutter ut alt som skrives etterpå visstnok.... Hvis jeg bytter ut en verdi fra siste kolonne med en bokstav får jeg følgende feilmelding. Den beskriver hvilken rad som det feiler på. Msg 4864, Level 16, State 1, Line 6 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 4, column 8 (offer_d_t). Lenke til kommentar
RulleRimfrost Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Mulig å kjøre replace på komma til semikolon for å hindre evt desimalforvirring? Men, de jeg gjorde noe slikt for mange år siden benyttet jeg et ETL-verktøy som het Talend Open Studio. Der kunne man hente en input, konvertere og evt mappe til en output grafisk / javabasert. Deretter eksporterte man hele jobben til en liten java-pakke, og man fikk til og med en autogenerert bat-fil man kunne starte via schedulern til Windows. Noe læringskurve, men husker muligheten til å teste jobbene på de 100 første linjene mens man utviklet sparte mye tid. Lenke til kommentar
Emancipate Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 [ code ] kutter ut alt som skrives etterpå visstnok.... Egentlig ikke. Lenke til kommentar
siDDis Skrevet 23. februar 2016 Forfatter Del Skrevet 23. februar 2016 Når eg prøver kommandoen din andreasn så får jeg denne feilmeldingen: Lenke til kommentar
Emancipate Skrevet 23. februar 2016 Del Skrevet 23. februar 2016 Så filen bruker CRLF, men du spesifiserte LF (\n)? Lenke til kommentar
siDDis Skrevet 23. februar 2016 Forfatter Del Skrevet 23. februar 2016 Den bruker \n som er vanlig for Unix. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå