AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tabellenstruktur in eine neue DB kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellenstruktur in eine neue DB kopieren

Ein Thema von Sir Rufo · begonnen am 18. Okt 2006 · letzter Beitrag vom 19. Okt 2006
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Tabellenstruktur in eine neue DB kopieren

  Alt 18. Okt 2006, 18:04
Datenbank: MySQL, MSSQL, Access • Version: div. • Zugriff über: ADO
Ich würde gerne das Ergebnis einer Abfrage in einer temp. Access-DB zwischenspeichern.

Jetzt möchte ich aber nicht die ganze Abfrage analysieren und einen entsprechenden CREATE TABLE erzeugen, der die Sprachfeinheiten von Access interpretiert.

Dass muss auch wesentlich einfacher gehen, wenn man sich z.B. den Datenimport/-export vom MSSQL-Server anschaut.
Der verbindet sich so quasi mit jeder DB (Hauptsache die Treiber sind da) und transportiert die Daten.
So schon ausprobiert mit einer IBM-DB2 als Quelle und MySQL als Ziel.

Ich kann mir nicht vorstellen, dass MS da die ganzen Dialekte in das Transport-Programm eingebaut hat (oder doch?)

Wer weiss da was, oder wer hat dafür eine Lösung?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Tabellenstruktur in eine neue DB kopieren

  Alt 18. Okt 2006, 18:34
Schau dir mal die MSSQL Funktion OPENDATASOURCE bzw OPENROWSET an.
Im MSSQL kannst du damit dynamische Datenlinks zu externen Datenbanken (z.B. Access) erstellen.
Einem SELECT INTO steht dann auch nichts mehr im Wege

"richtungsweisendes" und ungetestetes Beispiel:

SQL-Code:
SELECT VORNAME,NAME,IRGENDWAS
FROM dbo.MeineMssqlTable
INTO ( OPENDATASOURCE('OLEDB','Filename=c:\MeineAccessDB.mdb' ).EinNeuerTabellenName
WHERE aktiv = 1
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Tabellenstruktur in eine neue DB kopieren

  Alt 18. Okt 2006, 18:46
Zitat von jensw_2000:
SQL-Code:
SELECT VORNAME,NAME,IRGENDWAS
FROM dbo.MeineMssqlTable
INTO ( OPENDATASOURCE('OLEDB','Filename=c:\MeineAccessDB.mdb' ).EinNeuerTabellenName
WHERE aktiv = 1
IMHO muss das umgedreht werden:
SQL-Code:
SELECT VORNAME,NAME,IRGENDWAS
INTO ( OPENDATASOURCE('OLEDB','Filename=c:\MeineAccessDB.mdb' ).EinNeuerTabellenName
FROM dbo.MeineMssqlTable
WHERE aktiv = 1
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Tabellenstruktur in eine neue DB kopieren

  Alt 18. Okt 2006, 19:57
Ich suche eher etwas wie:

Code:
Private Sub Command1_Click()
  Dim ADOtbl As New ADOX.Table
  Dim strCnn As String

    'Neue Tabelle benennen
    ADOtbl.Name = "tblADOx"

    'Neue Tabelle in DB einfügen
    Cat.Tables.Append ADOtbl
End Sub
Und dann...
Code:
Private Sub Command1_Click()
  Dim ADOCol As New ADOX.Column

    With ADOCol
      'ParentCatolog ist zum Setzen der
      '.Properties notwendig
      Set .ParentCatalog = Cat

      'Name der Spalte übergeben
      .Name = "NeueSpalte"

      'Typ der Spalte übergeben (hier ein Textfeld)
      .Type = adVarWChar

      'Feldgrößendefinitionen sind nur bei
      'Textformat zulässig
      .DefinedSize = 255

      'Standardwert
      If Not IsMissing(Default) Then
        .Properties("Default") = "Text eingeben"
      End If

      'Eine leere Zeichenfolge ist erlaubt
      .Properties("Jet OLEDB:Allow Zero Length") = True

      'Aufsteigende Sortierung
      .SortOrder = adSortAscending
    End With

    'Neue Spalte an Tabelle übergeben
    Cat.Tables("MeineTabelle").Columns.Append ADOCol
End Sub
Das müsste eigentlich das sein, was ich suche, allerdings ist das die falsche Sprache
Und das mit dem ADOX als Unit habe ich auch nicht gefunden ...

Wer kann da helfen?

cu
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Tabellenstruktur in eine neue DB kopieren

  Alt 18. Okt 2006, 21:18


Selber helfen geht ja auch ...

Create an Access database with ADOX

Das ist des Rätsels Lösung (wenigstens für Access). Ich werde das mal umsetzen und auch mit anderen Datenbanken ausprobieren.
Die Erfahrungen werde ich dann hier mal niederschreiben.

thanx

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#6

Re: Tabellenstruktur in eine neue DB kopieren

  Alt 19. Okt 2006, 09:53
Auch wenn es nicht ganz das ist, was du suchst ...

Ich möchte den Opendatasource Aufruf hier nicht falsch stehen lassen ..

SQL-Code:
SELECT * FROM
OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0',
                'Data Source="c:\meineAccessDB.mdb"')...eineAccessTabelle
-- die drei Punkte vor dem Tabellennamen sind wichtig !
Leider funktioniert das mit dem
SQL-Code:
SELECT *
INTO
OPENDATASOURCE .....
FROM
....
nicht so einfach wie erwartet. Daran muss ich noch feilen ...


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz