![]() |
Datenbank: MYSQL • Version: 5.5.27 • Zugriff über: dbExpress
MySQL .sql ausführen
Nabend zusammen,
ich versuche mich gerade an einer MySQL Datenbank, bzw das Importieren einer solchen. Dazu habe ich von dbExpress "TSQLConnection" und "TSQLQuery" eingerichtet. Einfache Abfragen funktionieren auch wunderbar, doch das Ausführen einer ganzen .sql Datei funktioniert leider nicht. Dazu habe ich einfach mal eine Testdatenbank geladen: ![]() Dort musste ich noch "USE `classicmodels`;" zu "/*USE `classicmodels`;*/" ändern, damit ich meine Datenbank verwenden konnte. Aber wenn ich nun die Querys aus der Datei ausführen möchte bekomme ich folgenden Fehler: Zitat:
Wenn ich das über PHPMyAdmin aufrufe, funktioniert alles wunderbar. Desweiteren würde mich noch interessieren, ob man auch eine Verbindung mit "TSQLConnection" herstellen kann, ohne eine DB anzugeben, da ich diese erst zur Laufzeit erstellen möchte. |
AW: MySQL .sql ausführen
Zitat:
Eine einfache Query kann nicht ein komplettes SQL-Skript abarbeiten. |
AW: MySQL .sql ausführen
Achso natürlich, sollte man vielleicht erwähnen ^^
Also über PhpMyAdmin über den Reiter "importieren". Über mein Programm:
Delphi-Quellcode:
SQLQuery.SQL.LoadFormFile(Edit1.Text); // Pfad/script.sql
SQLQuery.Open; Ich habe gedacht, da es ja die Funktion "LoadFromFile" gibt, sollten daher mehrere Befehle problemlos möglich sein. |
AW: MySQL .sql ausführen
Daraus kann man die Funktionalität nicht ableiten.
Teilweise muss ein Skript noch interpretiert werden (z.B. bei MSSQL das "GO"), bzw. hier muss das Skript 1:1 an den Server geschickt werden. Einige Komponenten prüfen ihrerseits aber nochmal die Syntax und werfen dann einen Fehler bevor der Server was von dem Skript sieht |
AW: MySQL .sql ausführen
Ok das heißt, ich muss das Script irgendwie an den Server senden, ohne das eine Überprüfung statt findet?
Es wird doch bestimmt eine saubere Lösung geben, anstatt die Fehler abzufangen aber einfach zu ignorieren oder? |
AW: MySQL .sql ausführen
Nach meiner kleinen Google Rundreise, sieht es wohl so aus, dass du bei dbExpress tatsächlich das Skript auseinanderpflücken musst und jeden Befehl einzeln zum Server schickst.
Am Besten sogar mit ![]() BTW wenn du XE4 hast, warum dann nicht mit FireDAC ![]() (Das ist bei der Architect Version doch inklusive) |
AW: MySQL .sql ausführen
Hmmm jetzt bin ich aber ein wenig erstaunt, dass etwas recht einfaches nicht einfach so umzusentzen ist.
Es muss ja nur Text an den Server gesendet werden. Der Rest wird ja automatisch verarbeitet. Jetzt habe ich mir mal die ZeosLib angesehen, aber auch damit geht es nicht. Jetzt stelle ich mir die Frage, wie ich am effektivsten das Script zerlege, dass jeder Command einzeld ausgeführt wird. Je nach Datenbank, sind es ja mehrere tausend Zeilen. Ich weiß nicht, wie ich die effektiv zerlegen soll. |
AW: MySQL .sql ausführen
??? Zeos: Die Antwort lauted TZSQLProzessor... Der zerlegt dir das Script. Achte auf korrekte Delimiter, ansonstent wird keine Componente das Script splitten können. Welche verwendest du? ";" gilt hier nicht in jedem Fall!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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