Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Insert mit Sonderzeichen (https://www.delphipraxis.net/28410-sql-insert-mit-sonderzeichen.html)

Berserker 24. Aug 2004 13:42


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

Hansa 24. Aug 2004 13:50

Re: SQL Insert mit Sonderzeichen
 
Zitat:

Zitat von Berserker
Ich benutze ApolloSQL.

Was ist denn das ? :shock: Egal, mir fällt nur auf, daß du keine Kommas verwendest. Insofern wird nur der string 'bla bla bla' inserted. Die Frage selber verstehe ich sowieso nicht ganz. :mrgreen:

Leuselator 24. Aug 2004 13:52

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ß

Berserker 24. Aug 2004 13:53

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.

Berserker 24. Aug 2004 13:58

Re: SQL Insert mit Sonderzeichen
 
Also mit den Doppelten ' funktioniert eiwandfrei.

Nur mit den " Gänsefüßen will es nicht. :gruebel:

Berserker 24. Aug 2004 14:00

Re: SQL Insert mit Sonderzeichen
 
Zitat:

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:
Ich habe eine Datenbank auf MySQL dort ziehe ich mir ein Dump und exportiere es in eine export.sql Datei mit a 25000 Zeilen. Die Tabelle hat 46 Spalten.

Wäre also die einfachste Varianten das wieder zu Importieren.

Wie würdest du es denn machen?

Gruber_Hans_12345 24. Aug 2004 14:00

Re: SQL Insert mit Sonderzeichen
 
verwendest du Delphi Query's ?
wenn ja, dann verwende einfach Parameter
Delphi-Quellcode:
sql.SQL.Text := 'INSERT INTO ARTIKE (BEZEICHNUNG) VALUES(:BEZ)';
sql.ParamByName('BEZ').AsString := 'blah ''ddfdsf''';
sql.ExecSQL;
Gruss
Hans

edit ... ups gerade gelesen, dast ja keine Parameter verwenden kannst .....

Berserker 24. Aug 2004 14:04

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

Robert_G 24. Aug 2004 16:35

Re: SQL Insert mit Sonderzeichen
 
Zitat:

Zitat von Berserker
Ich lade ein File mit 25000 Zeilen wo SQL-Inserts drin stehen.

uff :shock:

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