Access to Maysql bzw. Empfehlung für ein Programm?

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

  • Access to Maysql bzw. Empfehlung für ein Programm?

    Hallo,

    ich wollte ach einer Empfehlung fragen. Bin allerdings kein Exoperte bei Datenbanken.

    Ich kann in Access und in mySQl Daten aus Textdatein einlesen.
    Diese haben die folgende Form:
    ID Autor Titel Quelle

    Diese sollen in einer mySQL Datenbankauf dem Server und sollen von mir zu Hause ständig erweitert werden. Da es mehrere 1 - n Beziehungen in den Daten gibt, wollte ich diese wie folgt aufteilen.

    (Tabelle1) A-ID Autor
    (Tabelle2) T-ID Titel A-ID
    (Tabelle3) Q-ID Quelle T-ID A-ID

    Mit Access auf meinem Rechner kann ich diese Tabellen problemlos erstellen, da Access eine grafische Benutzerführung hat und ich sonst keine Ahnung hätte, wie ich am besten die Tabelle in diese drei Tabellen aufzuteilen hätte. Hinzu kommt, dass Access bei neuen Daten in der Stammtabelle, die Daten in Tabelle 1,2 und 3 mit dem Ausführen der Abfrage vervollständigt.

    Auf dem Server hab ich nun mySQL und kein Access, was auch gut so ist.

    Meine Frage ist, wie ich es nun am schlausten anstellen sollte. Gibt es ein Programm für mysql, dass in grafischer Form auch das erledigt, was Access macht oder sollte ich nach einem Access to Mysql Converter suchen, der
    die Sachen wieder in ein Textfile schreibt, was ich regelmäßig auf den Server via phpmyadmin hochladen kann?

    Was könnt ihr empfehlen?
    Zuletzt geändert von flo; 10.03.2007, 14:09.

  • #2
    Du wirst ja wohl drei Tabellen mit PHPMyadmin anlegen können? Oder was möchtest du machen?
    ich glaube

    Kommentar


    • #3
      Ich möchte in die Tabellen ständig schubweise neue Daten einpflegen.
      Access besitzt dabei einen Automatismus, dass man die bestehenden Tabellen mit den bereits erstellten Abfragen erweitert.

      Kommentar


      • #4
        Dann musst du ein PHP-Skript schreiben, welches die Daten von irgendwo einliest und in die Datenbank schreibt.
        Automatisieren kannst du das dann mit einem Cronjob.
        Eine Oberfläche, in der man das zusammenklicken kann, wirst du nicht finden.
        ich glaube

        Kommentar


        • #5
          Schade, hab gehfft, dass so etwas existiert.

          schönen Gruß
          flo

          Kommentar


          • #6
            Jetzt habe ich versucht die Sachen direkt mit
            Query in die Tabellen zu verschieben, die erste Abfrage ging,
            die zweite hängt sich auf meinem rechner auf, kann ich das auch häppchenweise irgendwie ausführen?

            PHP-Code:
            INSERT INTO autoren autor )
            SELECT DISTINCT db.autor
            FROM db
            ORDER BY db
            .autor DESC;

            INSERT INTO titelliste titelaid )
            SELECT db.titelautoren.aid
            FROM autoren INNER JOIN db ON autoren
            .autor db.autor
            ORDER BY db
            .titel
            Ich hab jetzt in der Originaltabelle gut ne Million Einträge. Aus diesen
            habe ich jetzt in der Tabelle autoren den Namen und eine automatische aid zugewiesen.
            Im nächsten Schritt wollte ich nun in die Tabelle titelliste den Titel und die zugehörige aid plus eine automatische tid einfügen.

            Habe ich was falsch gemacht? Oder wie kann ich das häppchenweise einfügen bzw. die Tabellen updaten so dass die bereits existenten Einträge nicht überschrieben werden?

            Gruß
            flo

            Kommentar


            • #7
              Kannst du bitte mal erklären, was du genau machen willst.
              Zuerst wolltest du irgendetwas automatisches mit einem Textfile machen. Und nun? Was für eine Million Einträge, und was soll damit passieren?

              Queries hängen sich übrigens normalerweise nicht auf, sondern geben eine Fehlermeldung aus... die erfährst du mit mysql_error(), und es wäre nett, wenn du die dazu posten würdes.

              PHP-Code:
              ... INNER JOIN db ON autoren.aid db.autor 
              versuch das mal
              ich glaube

              Kommentar


              • #8
                Hallo,

                ich möchte halt das, was ich schon mit access gemacht habe auf mysql übertragen, weil ich diese Datenbank auf dem Server zur Verfügung habe.

                Ausgangspunkt ist die Tabelle db
                Diese möchte ich zum einem auf 3 Tabellen runterbrechen, da die
                Nutzung von diesen zu performanteren Abfragen führen soll.

                Zuerst soll jemand nach dem Autor suchen, dann nach dem Titel und dann sollen ihm alle Quellen angezeigt werden ...

                in der Spalte autor ist tatsächlich der Name des Autors vorhanden. Während aid ein Primärschlüssel der Tabelle autoren ist. Deswegen kann ich die beiden nicht gleichsetzen.

                Hab das ganze mit nem Pentium Centrino 1,4 GHz und 500 MB Ram 10 Minuten laufen lassen, es ist blos nichts passiert. Alle anderen Programme habe ich beendet, weil beim ersten Versuch ich diese nicht mehr schliessen konnte.

                Mysql läuft bei mir auf Windows XP mit phptriad. Weiß nicht, ob es an der Umgebung liegt...

                Kommentar


                • #9
                  Jetzt versteh ich langsam, worum es geht.

                  Werden denn überhaupt Einträge in der titellisten-Tabelle gemacht?

                  Wo führst du die Query aus, in PMA?

                  Du kannst auf jeden Fall ORDER BY weglassen. In welcher Reihenfolge der Kram da drinsteht ist egal, das sortiert man beim Abfragen.
                  Aber das wird wohl nicht soviel bringen.

                  Dann kannst du noch den Spalten db.autor und autor.autor (da steht beidesmal der Name drin, wenn ich das richtig verstanden habe) einen index geben, dann müsste der Join darüber schneller werden.
                  Kannst du nach dieser Umbauaktion ja wieder entfernen.

                  Und falls das alles nix hilft, könntest du erstmal alle Titel ohne die autorenid in die Tabelle einfügen, dann mit PHP alle Autoren inkl. ID in ein array lesen und so stückweise die autorenid in die Titeltabelle schreiben.... irgendwie so.
                  ich glaube

                  Kommentar


                  • #10
                    Hallo ministry,

                    ich hab es mit PMA ausgeführt.

                    In der Haupttabelle habe ich den autor als index gesetzt.
                    Dann das ganze ohne "order by" ausgeführt.

                    Die Autor-ID wurde auch richtig zugeordnet, allerdings gibt es die Titel mehrmals. Muss ich evtl. in der Tabelle titelliste den Indes auch auf titel setzen, damit die Einträge nicht doppelt dahinkommen? oder muss ans Ende evtl. Group by db.titel?

                    Gruß
                    flo

                    Kommentar


                    • #11
                      Original geschrieben von flo
                      Hallo ministry,

                      ich hab es mit PMA ausgeführt.

                      In der Haupttabelle habe ich den autor als index gesetzt.
                      Dann das ganze ohne "order by" ausgeführt.

                      Die Autor-ID wurde auch richtig zugeordnet, allerdings gibt es die Titel mehrmals.
                      Also hat es jetzt geklappt?

                      Muss ich evtl. in der Tabelle titelliste den Indes auch auf titel setzen, damit die Einträge nicht doppelt dahinkommen? oder muss ans Ende evtl. Group by db.titel?

                      Gruß
                      flo
                      Mit dem Index hat das nichts zu tun, versuch mal DISTINCT beim Select. Wieso stehen die Titel denn mehrfach in db drin?
                      ich glaube

                      Kommentar


                      • #12
                        Es sind jeweils 1-n beziehungen.
                        Die daten sind halt aus verschiedenen Quellen.
                        Ein Autor hat mehrere Bücher-Titel
                        Ein Büchertitel kann auf mehreren Seiten eingesehen werden.
                        Bsp:
                        Goethe Faust www.faust.de
                        Goethe Faust www.goethe.de
                        Goethe Werther www.faust.de
                        EDIT:
                        Zum x-ten Mal: Ihr Pfeiffen sollt nicht ständig Domains vollkommen aus dem Bezug verlinken, die euch nicht gehören! Siehe Regeln.
                        wahsaga


                        Jetzt habe ich aber noch ein Problem. Bei manchen Einträgen
                        ist vor dem ersten Zeichen ein Leerzeichen, bevor ich weiter mache,
                        würde ich dies gern entfernen.

                        Mit mysql könnte es so gehen:

                        PHP-Code:
                        UPDATE test SET text REPLACE(text' '''); 
                        Problem: Es werden alle Leerzeichen ersetzt. Ich möchte aber, dass nur das erste Zeichen Links durchsucht wird, also wenn der Begriff mit einem Leerzeichen beginnt, dann soll dieses ersetzt werden.

                        Vielen Dank für die Hilfe
                        flo
                        Zuletzt geändert von wahsaga; 10.03.2007, 18:23.

                        Kommentar


                        • #13
                          Dann machs mit Trim
                          ich glaube

                          Kommentar


                          • #14
                            Vielen Dank

                            hab es wie folgt gemacht:
                            PHP-Code:
                            UPDATE test SET text TRIM(text); 

                            Kommentar


                            • #15
                              Jetzt bräuchte ich nochmal Hilfe, hab hier und dort gelesen aber irgendwie funktioniert meine Lösung nicht.

                              Ich habe der ersten Tabelle ein Feld Anzahl hinzugefügt.
                              Nun möchte ich aus der Zweiten Tabelle zählen, wieviele Titel
                              es von dem Autor gibt und diese in die Spalte Anzahl der ersten Tabelle reinschreiben. So wie ich es gedacht habe, so funktioniert es offensichtlich nicht. Kann mir da jemand evtl. helfen. Hier ist mein Versuch:

                              PHP-Code:
                              UPDATE autor SET Anzahl zahl
                              WHERE autor
                              .aid IN
                              (SELECT Count(*) as zahl FROM titelliste
                              WHERE INNER JOIN titelliste ON autor
                              .aid titelliste.aid
                              Dieser Versuch funktioniert auch icht ;(

                              PHP-Code:
                              UPDATE autor SET anzahl = (SELECT Count(*) FROM titelliste
                              WHERE INNER JOIN titelliste ON autor
                              .aid titelliste.aid)
                              WHERE INNER JOIN titelliste ON autor.aid titelliste.aid
                              Zuletzt geändert von flo; 22.03.2007, 18:14.

                              Kommentar

                              Lädt...
                              X