Announcement

Collapse
No announcement yet.

Datenübernahme aus Paradox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenübernahme aus Paradox

    Derzeit versuche ich gerade, mittels der Datenbankoberfläche bestimmte Paradox-Tabellen in eine bestehende InterBase-Datenbank zu übernehmen. Mit der Kopierfunktion klappt das prinzipiell auch.

    Probleme machen jedoch Umlaute in CHAR-Feldern. Diese werden nicht mit dem richtigen Zeichensatz (ISO8859_1) übernommen, obwohl im BDE-Alias als LangDriver "Ascii-ansi" eingestellt ist.

    Was muß noch beachtet werden, damit die Datenübernahme funktioniert?

  • #2
    Hallo,

    welcher Zeichensatz (CHARACTER SET-Wert) wird in der InterBase-Datenbank verwendet?

    Mit dem Wert <i>ISO8859_1</i> sollten derartige Probleme nicht auftreten, zumal wenn für den BDE-Alias der Eintrag <i>'WEurope' ANSI</i> verwendet wird.
    <pre>
    CREATE DATABASE 'c:\tmp\test.gdb'
    USER 'SYSDBA' PASSWORD 'masterkey'
    DEFAULT CHARACTER SET ISO8859_1
    </pre>

    &#10

    Comment


    • #3
      Hallo Andreas,

      danke für den Hinweis. Meine DB wurde wohl versehentlich ohne DEFAULT CHARACTER SET angelegt. Was kann ich denn nun machen, um dieses Problem zu beheben? Kann man den DEFAULT CHARACTER SET nachträglich ändern? Habe dazu nicht gefunden.

      Alternativ: Habe die Datenbank neu angelegt, diesmal mit dem korrekten Zeichensatz. Nur fehlen mir jetzt die Daten. Gibt es ein Tool, das Daten von einer InterBase-Datenbank in die andere schaufelt?

      Für Hinweise wäre ich sehr dankbar!

      Gruß,
      Geor

      Comment


      • #4
        Hallo,

        ja - zum Import der Daten gibt es mehrere Möglichkeiten: <br>
        1. <b>Data Pump</b> - das Tool aus der Enterprise Version. <br>
        2. <b>Datenbankoberfläche</b> - über <i>Tabelle kopieren</i> können die Daten aus der alten Datenbank über eine temp. Hilfstabelle in die neue Datenbank kopiert werden. <br>
        3. <b>EXTERNAL FILE</b> - der InterBase unterstützt den direkten Zugriff auf eine externe ASCII-Datei, indem diese externe Datei als Tabelle interpretiert wird. Damit wird der direkte Daten-Export und -Import unterstützt.

        Über das folgende SQL-Script für <i>InterBase Windows ISQL</i> wird der Inhalt der Tabelle IMPORTTBL in die externe Datei DATA3.TXT exportiert:
        <pre>
        SET NAMES ISO8859_1;

        CONNECT "C:\Artikel\BorCon98\InterBase\Database\Workshop.g db"
        USER "SYSDBA" PASSWORD "masterkey";

        CREATE TABLE IMPORT_TMP
        EXTERNAL FILE "C:\Artikel\BorCon98\InterBase\Database\DATA3. TXT" (
        ID CHAR(10),
        KUNDE CHAR(30),
        BESTELLDATUM CHAR(15),
        BESTELLPREIS CHAR(15),
        VERSANDDATUM CHAR(15),
        BEMERKUNG CHAR(50));

        INSERT INTO IMPORT_TMP
        SELECT * FROM IMPORTTBL;

        COMMIT;

        DROP TABLE IMPORT_TMP;

        COMMIT;
        </pre>

        Somit kann auch die neue Datenbank die Datei DATA3.TXT als EXTERNAL FILE einbinden und einen INSERT INTO xxx SELECT... absetzen, um die Daten aus der externen Datei in die leere Tabelle zu übernehmen

        Comment


        • #5
          Hallo, <br>
          <br>
          ich habe über <br>
          <br>
          CREATE TABLE IMPORT_TMP<br>
          EXTERNAL FILE "C:\Artikel\BorCon98\InterBase\Database\DATA3.TXT" (<br>
          ID CHAR(10),<br>
          KUNDE CHAR(30),<br>
          usw. über Delphi-QuellCode <br>
          eine leer Tabelle erzeugt und die ASCII-Datei eingelesen. <br>
          Dieser Part funktioniert auch so weit bis auf die Tatsache, <br>
          das die ASCII-Datei für eine weitere Bearbeitung solange gesperrt <br>
          ist wie das Delphiprogramm läuft. <br>
          Wie kann man diesen Fehler beheben ? <br>
          Jörg Majert<br>
          E-Mail: [email protected] <br>
          oder [email protected] <br&gt

          Comment


          • #6
            Hallo,

            indem diese externe Tabelle über DROP TABLE wieder entfernt wird (die externe Datei bleibt dabei ungeändert, nur die Verbindung in der InterBase-Datenbank wird entfernt):
            <pre>
            SET NAMES ISO8859_1;

            CONNECT "C:\Artikel\BorCon98\InterBase\Database\Workshop.g db"
            USER "SYSDBA" PASSWORD "masterkey";

            CREATE TABLE IMPORT_TMP
            EXTERNAL FILE "C:\Artikel\BorCon98\InterBase\Database\DATA3. TXT" (
            ID CHAR(10),
            KUNDE CHAR(30),
            BESTELLDATUM CHAR(15),
            BESTELLPREIS CHAR(15),
            VERSANDDATUM CHAR(15),
            BEMERKUNG CHAR(50));

            INSERT INTO IMPORT_TMP
            SELECT * FROM IMPORTTBL;

            COMMIT;

            DROP TABLE IMPORT_TMP;

            COMMIT;
            </pre&gt

            Comment


            • #7
              Hallo, <br>
              <br>
              genau das habe ich auch getestet. Die Datei war auch gesperrt. <br>
              Ein Disconnect vom Database gibt aber die Datei frei. <br>
              <br>
              Getestet im Programmcode und über ISQL.<br>
              <br>
              Jörg Majert <br&gt

              Comment


              • #8
                Hallo,<br>
                ich habe noch ein Problem (unwissenheit) beim Interbase Server.<br>
                Ich habe bei einem Projekt ein Datensatzaufkommen das mir die<br> Dateigröße (4GB bei NT)<br>
                sprengt. Nachfolgend ein Script, welches die Datenbankdateien anlegt. <br>
                In diesem Zusammenhang habe ich die Fragen:<br>
                <br>
                a.) Inwie weit besteht eine Verbindung zwischen PAGE_SIZE und LENGTH <br>xxxx PAGES ?<br>
                b.) Wie groß wird die Datei "PROCONTROL.GDB" und "PROCONTROL.GD1" bei <br>der standard<br>
                Einstellung LENGTH 10000 PAGES ?<br>
                c.) Wie ist Einheit (KB/MB/GB) ?<br>
                <br>
                /* comment_text */<br>
                /* comment_text */<br>
                CREATE DATABASE "d:\daten\delphi_5\procontrol\iblocal\procontrol.g db"<br>
                USER "sysdba"<br>
                PASSWORD "masterkey"<br>
                PAGE_SIZE = 4096<br>
                LENGTH = 10000<br>
                DEFAULT CHARACTER SET ISO8859_1<br>
                FILE "d:\daten\delphi_5\procontrol\iblocal\procontrol.g d1" STARTING <br>AT PAGE 10001<br>
                LENGTH 10000 PAGES<br>
                FILE "d:\daten\delphi_5\procontrol\iblocal\procontrol.g d2";<br>
                COMMIT;<br>
                <br>
                MfG<br>
                <br>
                Jörg Majert<br&gt

                Comment


                • #9
                  Ich hatte das selbe Problem mit den Umlauten, meine Lösung war beim anlegen der Database keinen Zeichensatz anzugeben und in der BDE auch nicht. Die Umlaute werden richtig dargestellt und es gibt keinerlei Probleme

                  Comment

                  Working...
                  X