Problem mit Auto bei Export von DBF nach SQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Auto bei Export von DBF nach SQL

    Hallo Wissende!

    Ich erstelle gerade eine Exportiersoftware, die eine SQL-Datei erstellt, welche die Inhalte einer gesamten DBF-Datenbank in eine mySQL-Datei exportiert. Alles klappt schon ganz gut, ausser das Übertragen der Counter (=Auto_Increment)

    Da habe ich noch das Problem, dass ich ja beim Creieren der Tabelle ein Feld anlege, welches Auto_Increment ist. Dementsprechend kann ich da nun nicht die Autowerte der DB reinschreiben, weil sie sich ja selbst hochzählen.

    Macht es Sinn dieses Feld anfänglich beim Erzeugen einfach als Integer zu deklarieren, die Daten reinzuschreiben und am Ende diesen Feldtyp von Integer nach Auto_Increment umzuschreiben? Geht das?

    Das hier wäre mein generierter Code:
    CREATE TABLE FLAGGEN(
    db_id INT NOT NULL AUTO_INCREMENT Primary Key,
    country_ger VARCHAR(25),
    country_eng VARCHAR(25),
    country_org VARCHAR(25),
    ioc VARCHAR(3),
    ) TYPE=MyISAM ;

    INSERT INTO FLAGGEN (db_id,country_ger,country_eng,country_org,ioc,
    VALUES
    ('1','1','Deutschland','Germany','','GER','ger'),
    ('2','2','Frankreich','France','','FRA','fra'),
    ('3','3','England','England','','ENG','eng'),
    ('4','4','Russland','Russia','','RUS','rus'),
    ('5','5','Lettland','Latvia','','LET','let');

    db_id ist dabei in meiner DBF-Datei vom FeldTyp her Counter=Auto_Increment.
    Danke
    Tom

  • #2
    an deinen sql-anweisungen sehe ich spontan keinen fehler
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ok, aber ich erzeuge ja das feld db_id so:

      db_id INT NOT NULL AUTO_INCREMENT Primary Key

      und will dann auch noch diesem Feld einen Wert aus der Originalen DB übergeben. Das kann doch gar nicht gehen, da dieser Wert AUTOMATISCH erzeugt wird.

      Von daher meine Frage, ob ich das anfänglich umgehen kann, indem ich das Feld zuerst als normalen Int anlege, die Werte dort eintrage und dann im Nachgang dieses Feld in einen AUTO_INCREMENT ändere. Damit hätte ich dann inhaltlich absoluten Einklang...

      GEHT das?
      Macht das Sinn?
      Danke
      Tom

      Kommentar


      • #4
        du kannst problemlos beim insert eine id angeben. auch wenn du den auto_increment aktiviert hast.

        du musst dir nur sicher sein, dass die einzufügende id noch nicht vorhanden ist
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          wow, also wenn das wirklich geht, muss ich nochmals testen, denn beim letzten versuch hatte das noch nicht geklappt und wenn ich mich mich recht entsinne, kam da folgende fehlermeldung:

          #1136 - Column count doesn't match value count at row 1

          nachdem ich diesen Code habe ausführen lassen:

          CREATE TABLE FLAGGEN(
          db_id INT NOT NULL AUTO_INCREMENT Primary Key,
          country_ger VARCHAR(25),
          country_eng VARCHAR(25),
          country_org VARCHAR(25),
          ioc VARCHAR(3),
          flag VARCHAR(25)
          ) TYPE=MyISAM ;

          INSERT INTO FLAGGEN (db_id,country_ger,country_eng,country_org,ioc,flag)
          VALUES
          ('1','1','Deutschland','Germany','','GER','ger'),
          ('2','2','Frankreich','France','','FRA','fra'),
          ('3','3','England','England','','ENG','eng'),
          ('4','4','Russland','Russia','','RUS','rus'),
          ('5','5','Lettland','Latvia','','LET','let'),
          ('6','6','Griechenland','Greece','','GRE','gre'),
          ('7','7','Albanien','Albanien','','ALB','alb'),
          ('8','8','Algerien','Algeria','','ALG','alg'),
          ('9','9','Andora','','','AND','and'),
          ('10','10','Argentinien','Argentine','','ARG','arg'),
          ('11','11','Armenien','Armenia','','ARM','arm'),
          ('12','12','Australien','Australia','','AUS','aus'),
          ('13','13','Österreich','Austria','','AUT','aut'),
          ('14','14','Aserbaidschan','','','AZE','aze'),
          ('15','15','Belgien','','','BEL','bel'),
          ('16','16','Weißrussland','','','BLR','blr'),
          ('17','17','Brasilien','Brasilia','','BRA','bra'),
          ('18','18','Bulgarien','Bulgaria','','BUL','bul'),
          ('19','19','Canada','Canada','','CAN','can'),
          ('20','20','Zypern','Cyprys','','CYP','cyp'),
          ('21','21','Tschechien','Czech Republic','','CZE','cze'),
          ('22','22','Dänemark','Denmark','','DEN','den'),
          ('23','23','Ägypten','Egypt','','EGY','egy'),
          ('24','24','Spanien','Spain','','ESP','esp'),
          ('25','25','Estland','Estonia','','EST','est'),
          ('26','26','Äthiopien','Ethiopia','','ETH','eth'),
          ('27','27','Finland','Finland','','FIN','fin'),
          ('28','28','Gambia','Gambia','','GAM','gam'),
          ('29','29','Ghana','Ghana','','GHA','gha'),
          ('30','30','Guatemala','','','GUA','gua'),
          ('31','31','Ungarn','Hungary','','HUN','hun'),
          ('32','32','Indonesien','','','IND','ind'),
          ('33','33','Irland','','','',''),
          ('34','34','Irak','Iraque','','IRQ','irq'),
          ('35','35','Iran','Iran','','',''),
          ('36','36','Island','Island','','ISL','isl'),
          ('37','37','Israel','Israel','','ISR','isr'),
          ('38','38','Italien','Italy','','ITA','ita'),
          ('39','39','Jameika','Jamaica','','JAM','jam');

          Ist da ein Fehler? Oder liegt es daran, dass ich den Wert in Hochkommas übergebe...?
          Danke
          Tom

          Kommentar


          • #6
            db_id,country_ger,country_eng,country_org,ioc,flag = 6 Felder

            '1','1','Deutschland','Germany','','GER','ger' = NAA??? Wieviel???

            Column count doesn't match value count <-- Das mal übersetzen und dann solltest du selbst drauf kommen.
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Au Backe!

              Da habe ich doch tatsächlich vergessen das Memofeld zu exportieren. Tut mir leid, dass ich Eure Zeit mit meinem Stümperhaften Verhalten verschwendet habe.

              Wer lesen kann ist eben klar im Vorteil, aber manchmal sieht man den Wald vor lauter Bäumen nicht. Ich werde jetzt erstmal 10 Euro ins Phrasenschwein einwerfen und mich dann beschämter weise in die Ecke stellen.
              Danke
              Tom

              Kommentar

              Lädt...
              X