MYSQL Luther Bibel

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

  • #16
    Okay, was soll denn in der Spalte "book" stehen? Bzw. Wo finde ich die Informationen zu der Spalte in den txt-Dateien?

    Als Grundlage für den Import diente mir folgendes Archiv: http://www.luther-bibel-1545.de/lu1545.zip

    Sie haben beim Import der zweiten Datei deshalb eine Fehlermeldung zu sehen bekommen, weil die Tabellen in beiden Dateien den selben Namen tragen, aber das ist ja jetzt eh hinfällig..

    Gruß,
    rl
    Zuletzt geändert von reallife; 19.02.2008, 14:38.

    Kommentar


    • #17
      Dort sind, wie man in der kjv.sql sieht, fortlaufende Nummern durch die ganze Bibel:

      01 (für Genesis)
      ...

      44 (für Lukas)

      etc..

      Kommentar


      • #18
        [...]
        "00a" und "00b" haben mich da ein wenig irritiert...

        melde mich später mit dem geänderten sql-dump.

        Kommentar


        • #19
          00a Public Domain
          00b Legal Notice

          Vielleicht können Sie das bei der Luther Version auch einfügen, damit ich das später auch verwenden kann. Ich danke Ihnen so herzlich!!!

          Kommentar


          • #20
            Prüfen Sie doch mal bitte, ob Sie damit etwas anfangen können.
            SQL-Dump

            Ich kann mir durchaus vorstellen, dass die Reihenfolge der Bücher nicht die richtige ist. Wenn Sie die Reihenfolge der Bücher korrigieren würden und mir diese im txt-Format zur Verfügung stellen könnten, würde ich den Import erneut durchführen.

            Ich könnte Ihnen natürlich auch das Script zur Verfügung stellen, wie Sie möchten.
            Zuletzt geändert von reallife; 19.02.2008, 16:51.

            Kommentar


            • #21
              Ja, wäre schön wenn Sie mir das Script auch zukommen lassen könnten. Ich weiss nicht wie ich all diese ids ändern kann. Es stimmt, die Stimmen nicht überein.

              Können Sie mir weiterhelfen und mir genau sagen, wie ich das machen kann.

              Herzlichen Dank,
              mokelmann

              Kommentar


              • #22
                Nun, das Skript sorgt nicht für die richtige Reihenfolge. Es liest die einzelnen Dateien ein, bereitet den Inhalt auf und speichert dieses in der DB ab.

                Man müsste jetzt die Dateien so umbenennen, dass diese in der richtigen Reihenfolge eingelesen werden können.

                Wie bereits erwähnt, dient als Grundlage folgendes Archiv: http://www.luther-bibel-1545.de/lu1545.zip

                EDIT:
                Das Script ist darauf ausgelegt, dass jede Datei ein Buch repräsentiert. Im neuen Testament ist es aber leider so, dass die drei Briefe des Johannes in einer Datei zusammengefasst sind. Dies müssten sie dann händisch ändern!

                Sollten Sie die Dateien durchnummerieren möchten, dann achten Sie darauf, dass diese nicht "1.txt" sondern "01.txt" heißen. Denn, "10.txt" würde unweigerlich nach "1.txt" in der Sortierreihenfolge vorkommen und das würde das gewünschte Ergebnis wieder verfälschen. ;-)



                Hier das Script:
                PHP-Code:
                <?
                // Verbindung zur Datenbank herstellen
                $intConnection = mysql_connect("localhost", "root", "");
                mysql_select_db("test", $intConnection);
                $strSqlInsertTemplate = "INSERT INTO `BibleTable2` "
                                                            . "(`Book`, `BookTitle`, `Chapter`, `Verse`, `TextData`) VALUES" 
                                                            . "('#book', '#bookTitle', '#chapter', '#verse', '#versecontent')";

                // Ordner zum Einlesen definieren:
                $arrDirectories = array(
                    "c:\\mein\\pfad", // bei den Ordnernamen muss darauf geachtet werden, dass kein Ordner mit dem Buchstaben "t" beginnt!!!
                    "c:\\mein\\pfad"
                );

                // >>>-------------------------------------------------------------------------------------------
                // Ab hier bitte nichts mehr ändern!
                $intBookCounter = 0;
                foreach( $arrDirectories as $strDirectory )
                {
                    if( !is_dir($strDirectory) )
                        die('Fehler: "'. $strDirectory .'" ist keine gültige Pfadangabe..');
                        
                    chdir($strDirectory);
                    $arrFiles = scandir(".");
                    foreach( $arrFiles as $strFile )
                    {
                        if( preg_match("~^\\.{1,2}$~", $strFile) )
                            continue;

                        $intBookCounter++;

                        $strContent = file_get_contents($strFile);
                        $arrTmp = preg_split("/([\n|\r]+)/i", $strContent);
                        $arrContent = array();
                        foreach( $arrTmp as $strTmp )
                        {
                            $strTmp = trim($strTmp);        
                            if( strlen($strTmp) > 0 )
                                array_push($arrContent, $strTmp);
                        }
                        unset($arrTmp, $strContent);
                        
                        $arrSqlData = array(
                            '#book' => sprintf("%02.0f", $intBookCounter),
                            '#bookTitle' => mysql_real_escape_string(array_shift($arrContent), $intConnection),
                            '#chapter' => '001',
                            '#verse' => null,
                            '#versecontent' => null
                        );
                        
                        $objChapter = null;
                        while( sizeof($arrContent) > 0 )
                        {
                            $strTmp = array_shift($arrContent);
                            if( preg_match("~^Das (\\d+)\\. Kapitel~", $strTmp, $arrResults) )
                            {
                                $arrSqlData['#chapter'] = sprintf("%03.0f", $arrResults[1]);
                            }
                            
                            if( preg_match("~^(\\d+)\\. (.*)$~", $strTmp, $arrResults) )
                            {
                                $arrSqlData['#verse'] = sprintf("%03.0f", $arrResults[1]);
                                $arrSqlData['#versecontent'] = mysql_real_escape_string($arrResults[2], $intConnection);
                                
                                $strSql = strtr($strSqlInsertTemplate, $arrSqlData);
                                mysql_query($strSql, $intConnection) or die(mysql_error());
                            }
                        }
                    }
                }
                // <<<-------------------------------------------------------------------------------------------

                echo "<h1>done..</h1>";
                ?>
                Zuletzt geändert von reallife; 19.02.2008, 23:13.

                Kommentar


                • #23
                  Ich habe es nun gemacht, aber die Ordnung stimmt immer noch nicht. Bitte schauen Sie sich die SQL Datei mal an. Ich habe Ihnen auch nochmal die ganzen Bücher geordnet angehängt.

                  Ich Danke Ihnen herzlich!


                  http://www.70x7media.de/01.zip

                  Kommentar


                  • #24
                    Also der Import funktioniert bei mir einwandfrei. Ich kann mir aber vorstellen, welcher Fehler Ihnen unterlaufen ist. Sie haben mit Sicherheit zwei mal den selben Pfad im Array ($arrDirectories) definiert, oder? Ich hatte dort zwei Einträge, weil ich die Testamente in separaten Verzeichnissen abgelegt hatte.

                    Wenn Sie also beide Testamente in einem Verzeichnis abgelegt haben, dann hinterlegen Sie die Pfadangabe zu diesem Verzeichnis auch nur ein einziges mal in dem o.g. Array, dann sollte es auch funktionieren.

                    Kommentar


                    • #25
                      Super, vielen Dank. Nun nummeriert er richtig, aber er fängt bei 2 an, nicht bei 1 für das erste Buch Moses. Kann ich das irgendwie beheben?

                      LG und wirklich super vielen Dank!

                      Kommentar


                      • #26
                        Ändern Sie folgende Zeile im Skript ...
                        PHP-Code:
                        if( preg_match("~^\\.{1,2}$~"$strFile) ) 
                        ... wie folgt ab ...
                        PHP-Code:
                        if( preg_match("~^\\.{1,2}$~"$strFile) || substr($strFile, -3) !== 'txt' 

                        Kommentar


                        • #27
                          Super, Danke. Hat geklappt. Ich schaue mal ob ich es auch mit Luther 1912 hinbekomme. Perfekt!

                          Kommentar


                          • #28
                            Ich habe nun schon wieder ein Problem. Ich kann den Luther1912 Text nicht richtig einlesen, da die Punkte im Kapitel nicht stimmen. Als Beipspiel habe ich ein Kapitel angehängt. Zu beachten ist, dass manchmal auch im Text Zahlen vorkommen, man müsste also etwas programmieren, dass nur diese am Anfang nimmt.

                            Des weiteren werden auch die Kapitel "1. Mose 1" mit "1Mose 1" eingelesen.

                            Wäre super nett, wenns Sie mir dabei noch helfen könnten. Hier die file:

                            ww http://www.70x7media.de/01.txt

                            lg,
                            mokelmann

                            Kommentar


                            • #29
                              Die richtige Nummer des jeweiligen Kapitel in Ihrem Beispiel ist doch nicht die rot markierte sondern die grün markierte Zahl, oder?
                              Beispiel: [COLOR=red]1[/COLOR]Mose [COLOR=green]23[/COLOR]

                              Das Skript ist darauf ausgelegt, dass innerhalb der Dateien eine gewisse Struktur herrscht.
                              * Am Anfang der Datei muss der Titel stehen.
                              * Kapitel müssen so anfangen: "Das n. Kapitel"
                              * Verse müssen so anfangen: "n. Verstext..."

                              In Ihrer Datei herrscht eine solche Struktur nicht, deswegen funktioniert der Import nicht.

                              Das ganze lässt sich natürlich entsprechend anpassen, ich müsste dafür nur wissen, ob es sich dabei nur um diese einzige Datei handelt oder ob es mehrere sind? Wenn es mehrere sein sollten, weisen diese eine einheitliche Struktur auf, oder gibt es auch dort Unterschiede?

                              Kommentar


                              • #30
                                Nein, alle Dateien haben das gleiche Problem. Das Problem ist ja nur, das er bei "1Mose 23" nicht "1. Mose 23" schreibt.

                                Außerdem haben, wie gesagt, nicht alle Verse eine Zahl mit Punkt, z.B. "13 Der Herr sprach" anstelle von "13. Der Herr".

                                Dies ist bei allen Dateien so

                                LG,
                                mokelmann

                                Kommentar

                                Lädt...
                                X