SQL Insert mit Sonderzeichen
Hallo.
Kann mir jemand Hilfestellung geben bei folgendem Problem: Ich habe ein SqlQuery Dies funktioniert problemlos:
SQL-Code:
INSERT INTO artikel (bezeichnung) VALUES ('blah blah blah');
Hier sieht es schon anders aus, dies funktioniert nicht:
SQL-Code:
INSERT INTO artikel (bezeichnung) VALUES ('blah blah blah 15'' ');
Es geht jetzt nicht darum statt ' ein " zu benutzen sondern das ich irgendwie die ' in die Tabelle bekomme. Bei MySQL kann man diese Zeichen ESCAPEN, in dem man einen \ davorstellt. Ich benutze ApolloSQL. Das funktioniert wenn ich die Texte per Parameter an das query übergebe. Jedoch brauche ich eine Möglichkeit, das per SQL-String zu machen für einen Datenimport. Kann mir jemand bei dem Problem helfen wie ich untern Delphi in einem String ein Zeichen wie ' escapen kann? MFG, Ronny |
Re: SQL Insert mit Sonderzeichen
Zitat:
|
Re: SQL Insert mit Sonderzeichen
mir ist zwar nicht klar, warum man bei einem Datenimport keine Parameter benutzen sollte, aber bitte: Du mußt die einzelnen Hochkommas verdoppeln - dann sollte es gehen:
' 15'' Monitor' --> '15'''' Monitor' Gruß |
Re: SQL Insert mit Sonderzeichen
Sorry wenn ich mich etwas unverständlich ausgedrückt habe.
Es geht darum im INSERT Zeichen wie ' und " zu verwenden die mit In das Feld rein sollen. Unter MySQL kann man diese Zeichen Escapen in dem man einen \ davorstellt. ApolloSQL ist eine DB von Vistasoftware. D.h. ich muss irgendwie die Zeichen ' und " escapen können. Ich habe es bereits mit QuteStr probiert. Leider kein Erfolg. |
Re: SQL Insert mit Sonderzeichen
Also mit den Doppelten ' funktioniert eiwandfrei.
Nur mit den " Gänsefüßen will es nicht. :gruebel: |
Re: SQL Insert mit Sonderzeichen
Zitat:
Wäre also die einfachste Varianten das wieder zu Importieren. Wie würdest du es denn machen? |
Re: SQL Insert mit Sonderzeichen
verwendest du Delphi Query's ?
wenn ja, dann verwende einfach Parameter
Delphi-Quellcode:
Gruss
sql.SQL.Text := 'INSERT INTO ARTIKE (BEZEICHNUNG) VALUES(:BEZ)';
sql.ParamByName('BEZ').AsString := 'blah ''ddfdsf'''; sql.ExecSQL; Hans edit ... ups gerade gelesen, dast ja keine Parameter verwenden kannst ..... |
Re: SQL Insert mit Sonderzeichen
@Gruber_Hans_12345:
Ich lade ein File mit 25000 Zeilen wo SQL-Inserts drin stehen. Da müsste ich das erst komplett wieder zerlegen und dann alles per Parameter übergeben. Manche Zellen sind auch leer. Mit den Parametern habe ich es auch schon probiert. Es muss doch eine Möglichkeit geben das auch so zu bewerkstelligen. Ronny |
Re: SQL Insert mit Sonderzeichen
Zitat:
Warum denn das? Ich glaube die mit Abstand schlechteste Lösung für Import/Export sind solche SQL Files. Da wäre ja selbst ein CSV 100-mal besser. Wenn die Dateien von dir kommen, dann lege am Besten als FixedLength ab. An den Anfang der Datei kannst du dann für jede Spalte die Länge ablegen. Auf die Art sparst du dir auch noch ein stupides Delimiter-Gesuche. ;) -> wesentlich schnelleres Einlesen in einen Array oder TList/TCollection-Descendant. SQL Listen sind nicht nur verdammt groß, es ist fast unmöglich sie mit einer zumutbaren Geschwindigkeit einzulesen. Schließlich ist jede Zeile eine eigenes Statement, während du mit einem parametrisierten INSERT immer wieder das GLEICHE Statement absetzt, nur die Werte der Parameter ändern sich. Die DB muss dadurch keinen neuen Query Plan erstellen oder die Berechtigungen prüfen. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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