![]() |
Datenbank: MS SQL • Version: 2012 • Zugriff über: ADO
Bulk Insert: Incorrect Syntax Near
Hallo,
ich habe ein kleines Problem mit dem Bulk Insert. Ich befülle eine Datenbank mit verschiedenen Tabellenarten (in diesem Fall die 400er), die von unterschiedlichen Herstellen kommen können. Bei den 400er Tabellen bin ich auf Bulk Insert umgestiegen, da sie hier bis zu 1,4GB groß sein können. Die anderen Tabellen habe mit als Transaction mit Insert hochgeladen und Sonderzeichen direkt im Programm abgefangen und herausgefiltert. Jetzt weiß ich aber nicht, wie ich mit Bulk Insert die Sonderzeichen abfangen kann. Fehlermeldung: Incorrect syntax near '-' Die Daten an der Stelle: 1A3 002 850-001 0002400 00088 0000003770000100023326 00 Klar woher es kommt, aber wie geht es wieder weg ^^ Der Aufruf erfolgt wie folgt:
Delphi-Quellcode:
ADOQuery1.SQL.Add('BULK INSERT [dbo].[400.'+Hersteller+'] FROM '''+Verzeichnis+'400.'+Hersteller+''' WITH (FORMATFILE='''+Verzeichnis+'400.xml'', BATCHSIZE='+Zeilenzahl+')');
Als Formatfile habe ich folgendes hinterlegt:
Code:
Für Hilfe wäre ich sehr dankbar :)
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RECORD> <FIELD ID="1" xsi:type="CharFixed" LENGTH="22"/> <FIELD ID="2" xsi:type="CharFixed" LENGTH="4"/> <FIELD ID="3" xsi:type="CharFixed" LENGTH="3"/> <FIELD ID="4" xsi:type="CharFixed" LENGTH="5"/> <FIELD ID="5" xsi:type="CharFixed" LENGTH="5"/> <FIELD ID="6" xsi:type="CharFixed" LENGTH="3"/> <FIELD ID="7" xsi:type="CharFixed" LENGTH="9"/> <FIELD ID="8" xsi:type="CharFixed" LENGTH="5"/> <FIELD ID="9" xsi:type="CharFixed" LENGTH="4"/> <FIELD ID="10" xsi:type="CharFixed" LENGTH="20"/> <FIELD ID="11" xsi:type="CharFixed" LENGTH="1"/> <FIELD ID="12" xsi:type="CharTerm" TERMINATOR="\r\n"/> </RECORD> <ROW> <COLUMN SOURCE="1" NAME="ArtNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="2" NAME="DLNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="3" NAME="SA" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="4" NAME="Reserviert" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="5" NAME="GenArtNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="6" NAME="LKZ" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="7" NAME="LfdNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="8" NAME="SortNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="9" NAME="KritNr" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="10" NAME="KritWert" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="11" NAME="Exclude" xsi:type="SQLNVARCHAR"/> <COLUMN SOURCE="12" NAME="AnzSofort" xsi:type="SQLNVARCHAR"/> </ROW> </BCPFORMAT> |
AW: Bulk Insert: Incorrect Syntax Near
Was sind denn '400ter-Tabellen'?
Wieso ist klar, dass das '-' ein Problem darstellt? Deine Bulk-Insert Tabellen musst Du vorher so aufbereiten, das sie direkt eingelesen werden können. |
AW: Bulk Insert: Incorrect Syntax Near
Außerdem beschreibt die XML-Datei einen Record mit 81+ Zeichen, dein Beispiel liefert aber nur 55.
|
AW: Bulk Insert: Incorrect Syntax Near
Erstmal zur Zeichenmenge, die ist korrekt, fehlende Zeichen (Leerzeichen) im Beispiel wurden anscheinend beim Kopieren hierher ausgelassen.
Eine Vielzahl an Tabellen werden damit geladen und sie sind bei dieser Art alle gleich aufgebaut. Die 400er ist einfach nur eine Tabellenart, in dem Fall die Artikel-Suchwegverknüpfung. Zitat:
Ich hatte nur festgestellt, das die Tabellen wo er einen Fehler gegeben hatte alle '-' enthielten und die Meldung: Incorrect syntax near '-' ließ mich dadrauf schließen. Jetzt hat sich aber folgendes ergeben, das Programm gab mir die Fehlermeldung: "Stream konnte nicht geladen werden", ich habe die entsprechende Datei rausgenommen (ohne das Programm komplett zu beenden) und wollte die weiteren laden lassen. Nun folgte bei jeder weiteren Datei (nachdem ich sie rausnahm^^): Fehlermeldung: Incorrect syntax near '-' Bis ich irgendwann das Programm beendete, kurz darauf folgte die Meldung: Zu wenig Arbeitsspeicher. Okay, ich habe jetzt 2 Mal die gleiche Fehlermeldung, einmal weiß ich das sie durch den Arbeitsspeicher (und das nichtbeenden des Programms) verursacht wird, aber im ersten Fall habe ich immer noch keinen Plan wo sie denn jetzt wirklich her kommt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz