none
STRING_ESCAPE RRS feed

  • Frage

  • Hallo zusasmmen,

    ich habe momentan dass Problem das ich mit einem Insert Daten in eine SQL Tabelle Importieren will. Leider sind in den Daten ab und zu Sonderzeichen wie z.B. ein ' (Hochkomma). Diese verursachen leider dann Fehler beim Import. Jetzt habe ich schon viele Foren durchgelesen, aber nichts hilfreiches gefunden ausser das es mit dem Befehl "STRING_ESCAPE" möglich sein soll dieses Problem zu beheben. Kann mir einer helfen und sagen wie und wo ich diesen Befehl einbauen soll? oder gibt es auch andere Lösungswege ?

    Vielen Dank schon einmal im Voraus.
    Mittwoch, 18. Juli 2018 08:34

Alle Antworten

  • Wie kodierst du denn den Insert?

    Wenn du diesen immer in einem großen String zusammen baust, gibt es für Hochkomma eine einfache Regel:
    Hochkomma in Zeichenketten sind zu verdoppeln.
    Je nach Programmiersprache gibt es Replace-Funktionen: Replace(Feld, <Einfaches Hochkomme>, <2 einfache Hochkommatas>).
    Dieses musst du beim Zusammenbauen ausführen und nicht durch Aufruf von SQL-Funktionen, da diese die Verdoppelung bereits benötigen.

    Besser ist es aber mit sog. Command-Objekten und Parametern zu arbeiten, da entfällt dann diese Mühsal.

    Oder, wenn du Massendaten importieren musst, kannst du auch den Bulk-Insert verwenden, der löst auch solche Probleme.

    Poste doch mal deinen Code.

    Mittwoch, 18. Juli 2018 09:05
  • Hallo Mucki,

    STRING_ESCAPE wird dir dabei nicht weiter helfen, da es Zeichenketten konform für JSON macht, was aber wiederum nicht in SQL (INSERT) Anweisungen verstanden wird.

    Du solltest das Problem bereits an der Wurzel packen und die Daten bereits beim Export, von wo auch immer, so formatieren, dass Anführungszeichen verdoppelt werden. Wobei es nicht nur daran scheitern, kann sondern auch am "falschen" Zeichensatz oder an inkonsistenten Spalten-/Zeilentrennungen (sog. CSV Format).

    Schau dir die Regeln für eine FlatFile Datenquelle an. Entspricht die Datei einem erkannten Format, ist ein Import via SSIS oder auch BULK INSERT einfacher und schneller zu realisieren, als über einzelne INSERT Befehle.

    Gruß Elmar

    Mittwoch, 18. Juli 2018 09:19
  • Ich glaube auch, dass du um ein parametrisiertes INSERT nicht herumkommen wirst. Auch, weil es gegen SQL-Injection hilfreich ist.
    Freitag, 20. Juli 2018 05:02