AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bulk Insert: Incorrect Syntax Near
Thema durchsuchen
Ansicht
Themen-Optionen

Bulk Insert: Incorrect Syntax Near

Ein Thema von CM123 · begonnen am 28. Nov 2014 · letzter Beitrag vom 28. Nov 2014
Antwort Antwort
CM123

Registriert seit: 28. Nov 2014
2 Beiträge
 
#1

Bulk Insert: Incorrect Syntax Near

  Alt 28. Nov 2014, 17:25
Datenbank: MS SQL • Version: 2012 • Zugriff über: ADO
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:

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:
<?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>
Für Hilfe wäre ich sehr dankbar

Geändert von CM123 (28. Nov 2014 um 18:01 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Bulk Insert: Incorrect Syntax Near

  Alt 28. Nov 2014, 18:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: Bulk Insert: Incorrect Syntax Near

  Alt 28. Nov 2014, 18:49
Außerdem beschreibt die XML-Datei einen Record mit 81+ Zeichen, dein Beispiel liefert aber nur 55.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
CM123

Registriert seit: 28. Nov 2014
2 Beiträge
 
#4

AW: Bulk Insert: Incorrect Syntax Near

  Alt 28. Nov 2014, 19:24
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:
Wieso ist klar, dass das '-' ein Problem darstellt?
Nun, das ist mir mitlerweile nicht mehr so klar...

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.

Geändert von CM123 (28. Nov 2014 um 20:01 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz