sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server BCP export skadad fil?

Tack gode gud, tack vare @user_0-svaret och @user3494351s kryptiska svar och kommentar och detta uråldriga foruminlägg kom jag äntligen på det här efter flera timmars dunkande med huvudet i väggen.

Problemet är att BCP gillar att lägga till ytterligare 8 byte till filen som standard. Detta förstör filen och gör att den inte kan öppnas om du bara använder den ursprungliga flaggan -n.

Däremot låter BCP dig ange en formatfil som utdata som kan tillåta dig att tala om för den att inte lägga till de extra 8 byten. Så jag har en tabell som jag skapade (att användas i en markör) i SQL Server som bara har EN RAD och EN KOLUMN med mina binära data. Tabell måste finnas när du kör det första kommandot.

I kommandoraden först måste du göra detta:

bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt

Detta skapar formatfile.fmt i katalogen du befinner dig i. Jag gjorde det på E:\-enheten. Så här ser det ut:

10.0
1
1       SQLBINARY           8       0       ""   1     MyColumn             ""

Den där 8 där är variabeln som bcp säger hur många byte som ska läggas till i din fil. Det är jäveln som korrumperar dina filer. Ändra det suget till en 0:

10.0
1
1       SQLBINARY           0       0       ""   1     MyColumn             ""

Kör nu bara ditt BCP-skript, släpp -n-flaggan och inkludera -f-flaggan:

bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt


  1. Hur man lagrar data i unicode på hindi

  2. Varför matchar inte Oracles varchar-sorteringsordning beteendet för varchar-jämförelse?

  3. Sätt att åtgärda SQL Server upptäckte ett logiskt konsistensbaserat I/O-fel

  4. MyCLI – En MySQL/MariaDB-klient med automatisk komplettering och syntaxmarkering