Beim Versuch, Daten in Azure zu importieren. Erstellen einer Textdatei in Management Studio 2005. Ich habe sowohl eine durch Kommas als auch durch Tabulatoren getrennte Textdatei ausprobiert.
BCP IN -c -t, -r\n -U -S -P Ich erhalte die Fehlermeldung {SQL Server Native Client 11.0]. Unerwarteter EOF in BCP-Datendatei
Hier ist das Skript, mit dem ich die Datei erstellt habe:
SELECT top 10 [Id]
,[RecordId]
,[PracticeId]
,[MonthEndId]
,ISNULL(CAST(InvoiceItemId AS VARCHAR(50)),'') AS InvoiceItemId
,[Date]
,[Number]
,[RecordTypeId]
,[LedgerTypeId]
,[TargetLedgerTypeId]
,ISNULL(CAST(Tax1Id as varchar(50)),'')AS Tax1Id
,[Tax1Exempt]
,[Tax1Total]
,[Tax1Exemption]
,ISNULL(CAST([Tax2Id] AS VARCHAR(50)),'') AS Tax2Id
,[Tax2Exempt]
,[Tax2Total]
,[Tax2Exemption]
,[TotalTaxable]
,[TotalTax]
,[TotalWithTax]
,[Unassigned]
,ISNULL(CAST([ReversingTypeId] AS VARCHAR(50)),'') AS ReversingTypeId
,[IncludeAccrualDoctor]
,12 AS InstanceId
FROM <table>
Hier ist die Tabelle, in die sie eingefügt wird
CREATE TABLE [WS].[ARFinancialRecord](
[Id] [uniqueidentifier] NOT NULL,
[RecordId] [uniqueidentifier] NOT NULL,
[PracticeId] [uniqueidentifier] NOT NULL,
[MonthEndId] [uniqueidentifier] NOT NULL,
[InvoiceItemId] [uniqueidentifier] NULL,
[Date] [smalldatetime] NOT NULL,
[Number] [varchar](17) NOT NULL,
[RecordTypeId] [tinyint] NOT NULL,
[LedgerTypeId] [tinyint] NOT NULL,
[TargetLedgerTypeId] [tinyint] NOT NULL,
[Tax1Id] [uniqueidentifier] NULL,
[Tax1Exempt] [bit] NOT NULL,
[Tax1Total] [decimal](30, 8) NOT NULL,
[Tax1Exemption] [decimal](30, 8) NOT NULL,
[Tax2Id] [uniqueidentifier] NULL,
[Tax2Exempt] [bit] NOT NULL,
[Tax2Total] [decimal](30, 8) NOT NULL,
[Tax2Exemption] [decimal](30, 8) NOT NULL,
[TotalTaxable] [decimal](30, 8) NOT NULL,
[TotalTax] [decimal](30, 8) NOT NULL,
[TotalWithTax] [decimal](30, 8) NOT NULL,
[Unassigned] [decimal](30, 8) NOT NULL,
[ReversingTypeId] [tinyint] NULL,
[IncludeAccrualDoctor] [bit] NOT NULL,
[InstanceId] [tinyint] NOT NULL,
CONSTRAINT [PK_ARFinancialRecord] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
Es gibt tatsächlich mehrere hunderttausend tatsächliche Datensätze, und ich habe dies von einem anderen Server aus gemacht, der einzige Unterschied besteht in der Version von Management Studio.
Wenn die Datei tabulatorgetrennt ist, sollte das Befehlszeilenflag für das Spaltentrennzeichen -t\t
-t,
sein.
"Unerwartetes EOF" bedeutet normalerweise, dass der Spalten- oder Zeilenabschluss nicht das ist, was Sie erwarten. Das heißt, dass Ihre Befehlszeilenargumente für diese Dateien der Datei entsprechen
Typische Ursachen:
SSMS sollte nichts damit zu tun haben: Es ist das Format (erwartet vs. tatsächlich), das zählt
Nur zu Ihrer Information, dass ich genau diesen Fehler gefunden habe, und es stellte sich heraus, dass meine Zieltabelle eine zusätzliche Spalte enthielt als die DAT-Datei!
In jedem Fall, bei dem ich auf diesen Fehler gestoßen bin, ist dies ein Problem, bei dem die Anzahl der Spalten in der Tabelle nicht mit der Anzahl der in der Textdatei getrennten Spalten übereinstimmt. Der einfachste Weg, dies zu bestätigen, besteht darin, die Textdatei in Excel zu laden und die Spaltenanzahl mit der der Tabelle zu vergleichen.
Ich denke, die meisten von uns bevorzugen Beispiele aus der realen Welt als Syntaxhinweise. Daher habe ich Folgendes getan:
bcp LoadDB.dbo.test in C:\temp\test.txt -S 123.66.108.207 -U testuser -P testpass -c -r/r
Meine Daten waren ein Auszug aus einer Unix-basierten Oracle-Datenbank, die durch Tabulatoren getrennt wurde und das Zeilenendezeichen LF hatte.
Da meine Daten tabulatorbegrenzt waren, habe ich keinen -t-Parameter angegeben. Der Standardwert für bcp ist tab.
Da mein Zeilenabschlusszeichen ein LineFeed (LF) -Zeichen war, habe ich -r/r verwendet
Da meine Daten alle in char-Felder geladen wurden, habe ich den Parameter -c verwendet
Ich werde meine Erfahrungen mit diesem Thema teilen. Meine Benutzer schickten mir UTF-8-Codierung und alles funktionierte einwandfrei. Mein Ladevorgang schlug fehl, als die Kodierung in UCS-2 LE BOM auf Encode aktualisiert wurde. Verwenden Sie Notepad ++, um diese Einstellung zu überprüfen.
Die Umstellung auf UTF-8 hat mein Problem behoben.
Dieser link hat mir geholfen, mein Problem zu lösen.