"Load Data Infile..." Problem

Neonleuchte

Grünschnabel
Ich habe folgendes MySQL Prob:

1.) Ich habe eine MySQL Tabelle, die so aussieht:

id | a | b | c |
----------------

(id steht auf auto_increment und primary_key.)

Jetzt hab ich Textfiles, die ich mit "LOAD DATA INFILE..."
einfügen will. In den Texfiles stehen aber nur Werte für
a,b,c und keine id, denn die soll MySQL selbständig
hochzählen. Wenn ich jetzt aber "LOAD DATA INFILE..."
mache, schreibt MySQL den ersten Wert (also a) in die
erste Spalte (id), was natürlich Blödsinn ist, da ich dann
keine id habe und id->a, a->b, b->c...

Frage: Wie bekomme ich das hin, dass er die id selber einträgt
und dann a->, b->... schreibt?


2.) Ich hatte natürlich schon rumprobiert und
hab jetzt noch eine andere davon unabhängiges Frage:

Frage: Wodurch kann ich beeinflussen, dass die erste Zeile auch
id=1 bekommt oder bzw. eben id=n (n=anzahl der zeilen, also die
letzte).

Anderes ausgedrückt: Es ist so ein bisschen dieses
FIFO und FILO Prinzip. Also bei 3 Zeilen entweder dann die
finale MySQL Tabelle:

id | a | b | c |
----------------
1 | .. | .. | .. | -> Zeile 1 in txtfile
2 | .. | .. | .. | -> Zeile 2 in txtfile
3 | .. | .. | .. | -> Zeile 3 in txtfile

oder

id | a | b | c |
----------------
1 | .. | .. | .. | -> Zeile 3 in txtfile
2 | .. | .. | .. | -> Zeile 2 in txtfile
3 | .. | .. | .. | -> Zeile 1 in txtfile


Hab nämlich letzteres und weiss gar nicht wie
ich das gemacht habe...

Vielen Dank schon mal für Beiträge!
 
zu Punkt 1:

LOAD DATA INFILE 'quelle.txt' INTO TABLE data (a,b,c);

so sollte es gehen

und zwar auch so das die erste zeile die ID 1 bekommt und so weiter ...
 
Hatte es auch so gemacht, aber der Fehler lag woanders.
Egal, Hauptsache es ! :) Danke!

Jetzt ist aber was anderes komisch: Wenn ich jetzt die
drei eingefügten Zeilen lösche (über phpmyadmin) -
also die Tabelle leer mache - und sie wieder mit
"Load Data Infile" einfüge, zählt mysql bei der id
4,5,6 obwohl es doch nur drei einträge gibt und
es wieder auf 1,2,3 gehen sollte.

Wieso "merkt" sich MySQL die gelöschten Spalten?

Oder anders gesagt: Wenn ich drei Einträge hab
(id 1,2,3) und die zweite Zeile lösche, wie bekomme
ich es dann hin das MySQL id 1,2 macht und nicht
id 1,3?
 
Neonleuchte hat gesagt.:
Wieso "merkt" sich MySQL die gelöschten Spalten?

Das wissen nur die Programmierer :)

Flush Table dernamedertabelle

sollte nach dem Löschen des Tabelleninhalts dafür sorgen das er wieder bei ID 1 anfängt

Oder anders gesagt: Wenn ich drei Einträge hab
(id 1,2,3) und die zweite Zeile lösche, wie bekomme
ich es dann hin das MySQL id 1,2 macht und nicht
id 1,3?

das geht nicht automatisch
aber keiner braucht durchgehende IDs :)
 
ahhhh!

hab flush gemacht --> nix
(query ok. und dann alles wie vorher 1,3)
hab mal alle einträge gelöscht und daten neu eingefügt --> nix
4,5,6

stattdessen zählt er jetzt zusatzlich mal so, mal so

Nach dreimal einfügen (je drei zeilen, wir erinnern uns ;)):

id
--
30
29
28
27
26
25
31
32
33

wahhh? was soll das?

das ist ja echt blöde vorgesehen....
das muss doch irgendso ein billiger flush befehl sein, oder?
und wieso mal abwärts mal aufwärts einfügt kapier ich auch nicht...
 
Ok ein Vorschlag habe ich noch:

Nach dem
Delete from Tabellename

mach mal den

set insert_id = 1

dann den Load File

..........
Aber nochmal wenn du nur ein Datensatz löscht
sprich nur 1 und 3 noch da ist gibt es keine Möglichkeit das die IDs neu durchnummriert werden
(Wie ich schon sagte durchgehende IDs braucht wirklich keiner :) )

Die Reihenfolge der Datensätze in der Datenbank kann man auch nicht beeinflussen

30
29
28

die Reihenfolge passiert wenn zwischendurch Datensätze gelöscht werden - ist völlig normal

dann macht man halt ein order by hinter dem select und alles wird gut :)
 

Neue Beiträge

Zurück