• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

.txt datei zum einlesen in die datenbank erstellen

Status
Für weitere Antworten geschlossen.
hallo,
nachdem ich nun meinen mysql server(datenbank) zum laufen gebracht hab und gerade damit begonnen habe mich damit zu befassen hab ich schon ein erstes problem. um mit dem insert kommando die datensätze in eine tablelle zu laden, sollte man ja zuerst eine txt datei erstellen und sie dann mit jenem kommando in die tabelle laden, nur wie und wo erstelle ich diese datei. also bis jetzt hab ich ja txt dateien immer mit dem vim erstellt, den kann ich aber in der mysql prompt nicht aufrufen, soll ich also die mysql prompt verlassen und dan in einem verzeichnis, nur in welchem, eine txt datei erstellen. ich denk mal meine methode ist die falsche und es geht eigentlich viel einfacher, nur wie,
danke für hilfe,
gruss floar
 

PC-Ulf

Member
Code:
mysql < /Datei
Die meisten nutzen die Endung .sql statt .txt, man kann es natürlich noch genauer machen indem man die Datei mit .sql.txt kenntlich macht. Aber in der Regel ist eine .sql Datei immer eine .txt Datei.
 
OP
F

floardynamite

Member
hi ulf,
also bei mir klappt das so noch nicht. also wenn ich in der mysql prompt bin klappt das nicht, auch in meiner normalen prompt nicht
gruss floar
 
OP
F

floardynamite

Member
okich bin nun doch soweit gekommen
mit
Code:
./mysql  > /pet.sql
verschwindet zwar die prompt und ich komme in eine umgebung wie in dem vi, aber ich kann diese umgebung nicht mit :wq um die datei zu speichern verlassen, sondern nur mit strg-D, dann kommt aber eine sql syntax-fehlermeldung. das stimmt so auch noch nicht, oder?
 

PC-Ulf

Member
Ich habe mal zur Probe eine Datei erstellt, namens testdb.sql mit den Inhalt:
Code:
create database testdb;
Die sql Datei muß in der Syntax natürlich korrekt sein, sonst kann MySQL diese Datei nicht verarbeiten. Wird die SQL-Datei testdb.sql zum zweitenmal aufgerufen, erscheint eine Fehlermeldung (weil die DB nun schon vorhanden ist). Zur Probe der Vorgehensweise reicht erst mal die Testdatei, sollte es dann mit Deiner SQL-Datei nicht klappen, kannst Du nach Fehlern in dieser SQL-Datei suchen (hierfür bitte einen neuen Thread, damit es übersichtlich bleibt).

Ich habe es jetzt mal bei XAMPP ausprobiert:
Code:
cd /opt/lampp/bin
./mysql < testdb.sql
./mysql
show databases;
Nun sollte die Testdatenbank testdb mit aufgelistet werden. Mit
Code:
drop database testdb;
entfernt man die Testdatenbank wieder.
Taucht ein Fehler bei der Ausführung auf, hat es meist zwei Gründe: 1. Fehler in der SQL-Struktur (z.B. weil die SQL-Datei aus einer anderen Version oder einer anderen Datenbank stammt) und 2. weil die SQL Datei schon eingelesen wurde (und die Befehle deshalb abgebrochen werden).
Sollte der erste Fall eintreffen, bitte einen neuen Thread aufmachen und die ersten 3 Zeilen der SQL Datei posten. Zudem exakt die Fehlermeldung und die Zeile in der der Fehler auftaucht, + 3 Zeilen vorher.
 
floardynamite schrieb:
um mit dem insert kommando die datensätze in eine tablelle zu laden, sollte man ja zuerst eine txt datei erstellen und sie dann mit jenem kommando in die tabelle laden, nur wie und wo erstelle ich diese datei. also bis jetzt hab ich ja txt dateien immer mit dem vim erstellt, den kann ich aber in der mysql prompt nicht aufrufen, [..]
Also ich kann in meinem SQL-Prompt meinen Editor direkt aufrufen:
Code:
> system mcedit ./count_rows.sql
Mit dem system Kommando können normale Systembefehle ausgeführt werden (die Hilfe sagt dazu: Execute a system shell command).
Darauf achten, dass du im richtigen Verzeichnis bist, resp. dass du den kompletten Pfad angibst.

mit
Code:
./mysql > /pet.sql

verschwindet zwar die prompt und ich komme in eine umgebung wie in dem vi
Ich denke nicht, dass du das Umleitungszeichen tatsächlich so verwenden willst. Der schreibt dann nämlich sämtliche Ausgaben (z.B. den Prompt und alle Rückmeldungen bis zum CTRL-D) in die angegebene Datei. Die "Richtung" in der die spitze Klammer zeigt, ist nämlich von Bedeutung.


Zusammengefasst kannst du also so vorgehen:
Code:
> cd /local/sql           # das Verzeichnis mit wo die SQL-Dateien abgelegt werden sollen
> mysql -u root -p        # oder sonst ein MySQL-Benutzer mit genügend Rechten
> system vim daten_1.sql  # ruft deinen Editor auf, erstellt die Datei, falls noch nicht vorhanden
> source daten_1.sql      # führt die in der Datei enthaltenen SQL-Befehle aus
> exit                    # Beendet den MySQL-Prompt
 
Status
Für weitere Antworten geschlossen.
Oben