Announcement

Collapse
No announcement yet.

SELECT INTO und ADO Connection

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

  • SELECT INTO und ADO Connection

    Hallo,

    ich möchte Tabellenstrukturen und Tabelleninhalte von einer alten ODBC - Datenbank in eine moderne Datenbank (JET 4 oder MS SQL) transferrieren. Die Quelle ist der OLEDB Provider für ODBC Datenbanken und das Ziel der OLEDB Provider für JET4 Datenbanken.

    Weis jemand ob man diesen umsetzen kann und wie das SELECT INTO formuliert werden muss?

    Grüße
    Mathias

  • #2
    Hi,
    <br>
    <br>"...Tabellenstrukturen und Tabelleninhalte von einer alten ODBC - Datenbank ..."
    <br>Um das in den MSSQL Server zu bekommen kann man die DTS (Data Transformation Services) benutzen.
    <br>(Menu Extras Daten Import Assistent im Enterprisemanager)
    <br>
    <br>Ein Select Into von einer in die andere Datenbank (verschiedene Datenbanksysteme) sowas funktioniert meines Wissens nach nicht. Das muß man selber Programmieren.
    <br>Bsp. ADODataSet1 öffnet über die alte ODBC Verbindung eine Tabelle und ADODataSet2 öffnet in der Zieldatenbank das Gegenstückt.
    Und dann Daten von ADODataSet1 nach ADODataSet2 kopieren.
    Aber wie gesagt man muß es nicht programmieren, da der SQL Server Tools mitliefert, die einen dabei unterstützen.
    <br>
    <br>Ein Nachteil bei dem Datenimport Assistenten ist, das man die Reihenfolge in der die Tabellen importiert werden sollen nicht festlegen kann. Es wird immer in alphabetischer Reihenfolge importiert. (Wenn hier jemand meint das geht doch, dann bitte ich darum mir das mitzuteilen (wie). Danke!)
    <br>
    <br>mfg
    <br>P

    Comment


    • #3
      Hallo Patrick,

      naja, das Problem liegt eigentlich darin, das ich einige Informationen über ISAPI bereitstellen möchte. Die Quelldaten liegen in einer Conzept 16 Datenbank (Vectorsoft). Diese Datenbank besitzt auch einen ODBC, aber leider unterstützt dieser keine INNER JOINS. Was so zusagen eine reine Katastophe ist. Ich kann also keine Relationen mit INNER JOINS angeben und muss demzufolge die WHERE Klausel verwenden. Diese hat nun die Folge, das Abfragen die über mehre Tabellen gehen, zwischen 10 und 15 Minuten benötigen. Naja, und das ist einfach nicht mehr zumutbar.

      Da habe ich mir gedacht, die Daten einfach von der C16 - Datenbank in eine moderne SQL - Datenbank zu transferieren. ACCESS 2000 sollte für den Anfang ausreichen, das es ja jetzt auch viele neue DDL - Befehle gibt. Wie z.B. TROP TABLE etc.

      Also habe ich versucht über SELECT INTO auf eine extern liegende ODBC - Verbindung zuzugreifen. Und da liegt eben das Problem, ich bin mir fast sicher das es geht. Da Access von sich aus soetwas ja kann.

      Und das ganze muss eben mit ADO programmiert werden, da der Transfer der Daten auf dem Server als Dienst laufen soll. Und zeitgesteuert die Daten von A nach B schaufelt.

      Kurz gesagt: Schaufle alle Tabellen mit wichtigen Informationen von der der ODBC - Datenbank (die keine INNER JOINS unterstützt arrrrrgg... ) in eine ACCESS Datenbank. Um einfache und schnelle Abfragen zu ermöglichen.

      Okay, ich gehe jetzt erst mal ein wenig schlafen.
      Grüße Mathia

      Comment


      • #4
        Hallo,

        der Satz "<i>... ich bin mir fast sicher das es geht. Da Access von sich aus soetwas ja kann.</i>" stimmt zwar, allerdings hat nicht ADO diese Fähigkeit, sondern der OLE DB-Provider der <b>Jet Engine</b> (der für ACCESS-Datenbanken zuständig ist).

        Wenn man zwei inkompatible System verbinden will, muss ein gemeinsames Zwischenformat verwendet werden. Und hier schlägt zum Beispiel die grosse Stunde von <b>XML</b>. ADO ist in der Lage, sowohl XML zu lesen als auch zu schreiben, so dass dieser Weg brauchbar ist.

        Im Powerworkshop und in der Session "Von DCOM zu SOAP" stelle ich auf der diesjährigen Entwicklerkonferenz u.a. ein Delphi-Beispielprojekt vor, das den Inhalt von Datenbanktabellen über ADO nach XML konvertiert, mit ZLib komprimiert, über einen SOAP-Server zum Client transportiert und dieser mit Hilfe von ADO das Ganze wieder in ein "lebendes" RecordSet konvertiert und im TDBGrid angzeigt

        Comment


        • #5
          Hallo,

          Danke für die Infos, habe bezüglich XML noch einige Wissenslücken.

          Nach langem Suchen in den Access Dokumentationen, und probieren von SQL Statements. Liegt die Lösung in der Verwendung der <b> IN - Klausel </b>. Mit der IN Klausel können nicht nur Paradox, DBase, Excel etc. angegeben werden. Sondern auch ODBC Quellen.

          <b>
          IN "" [ODBC;DSN=<Entry>;UID=<Username>;PWD=<Password>;]
          </b>

          Es sind folgende Scripts entstanden. Diese können über eine AdoConnection gesendet werden. Vorraussetzung hierfür, ist die Verwendung einer Connection mit dem OLEDB Provider für JET4 Datenbanken.

          Vom OLEDB Provider für Jet4 Datenbanken, den Zugriff auf eine externe ODBC Quelle mit Hilfe von SQL ermöglichen:

          <pre>
          SELECT * FROM Kunden IN "" [ODBC;DSN=<Entry>;UID=<Username>;
          PWD=<Password>;]
          </pre>

          Vom OLEDB Provider für Jet4 Datenbanken das importieren von externen
          ODBC Quellen mit Hilfe von SQL ermöglichen:

          <pre>
          SELECT * INTO ImportTable FROM Kundenstamm IN "" [ODBC;DSN=ZIS;UID=odbc;PWD=odbc;]
          </pre>

          Grüße
          Mathia

          Comment

          Working...
          X