Befehl für SQL Server 2012 - Importscript bei Create Table verallgemeinern
Hallo zusammen,
Ausgangssituation: Ich habe einen SQL Server und lasse dort nächtlich die Daten von einer Oracle Tabelle über ein Import Script importieren (SQL Server Agent).
Hierzu habe ich folgende Anfrage:
Gibt es eine Möglichkeit des Create Table Befehl in meinem Import Script zu verallgemeinern, sodass die komplette Struktur der Oracle Tabelle zunächst abgerufen und angelegt wird? Die angelegte Struktur wird dann im 2. Schritt mit den Inhalten befüllt...
Hintergrund: Falls in der bsw. "Artikel" Tabelle in der Oracle eine neue Spalte hinzugefügt wird, fehlt diese beim Erstellen der Tabelle im Script und müsste jedes mal manuell hinzugefügt werden...
Mit freundlichen Grüßen
toxduebel
Ausgangssituation: Ich habe einen SQL Server und lasse dort nächtlich die Daten von einer Oracle Tabelle über ein Import Script importieren (SQL Server Agent).
Hierzu habe ich folgende Anfrage:
Gibt es eine Möglichkeit des Create Table Befehl in meinem Import Script zu verallgemeinern, sodass die komplette Struktur der Oracle Tabelle zunächst abgerufen und angelegt wird? Die angelegte Struktur wird dann im 2. Schritt mit den Inhalten befüllt...
Hintergrund: Falls in der bsw. "Artikel" Tabelle in der Oracle eine neue Spalte hinzugefügt wird, fehlt diese beim Erstellen der Tabelle im Script und müsste jedes mal manuell hinzugefügt werden...
Mit freundlichen Grüßen
toxduebel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315351
Url: https://administrator.de/contentid/315351
Ausgedruckt am: 14.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Moin toxduebel,
das wird eher nicht ohne Eigenprogrammierung gehen.
MSSQL kennt ja noch nicht einmal den Befehl
Workaround ist nur das
Das geht aber nur von MSSQL-Tabellen nach MSSQL-Tabellen.
bei Importen von zB Oracle müssen ja Konvertierungen berücksichtigt werden, da unterschiedliche Datentypen/physische Eigenschaften vorliegen.
Also müstest du eigentlich erst die Struktur direkt im Oracle-Katalog abgreifen und in einem selbstgeschriebenen Stück Code definieren, wie denn ein neues
Grüße
Biber
das wird eher nicht ohne Eigenprogrammierung gehen.
MSSQL kennt ja noch nicht einmal den Befehl
CREATE neuetable LIKE andereTable
, die viele andere DBMSe mitbringen.Workaround ist nur das
SELECT INTO neueTable from andereTable
, das bei Bedarf eine neue Struktur anlegt und je nach WHERE-Clause eine neue leere oder mit Daten befüllte Table-Kopie anlegt.Das geht aber nur von MSSQL-Tabellen nach MSSQL-Tabellen.
bei Importen von zB Oracle müssen ja Konvertierungen berücksichtigt werden, da unterschiedliche Datentypen/physische Eigenschaften vorliegen.
Also müstest du eigentlich erst die Struktur direkt im Oracle-Katalog abgreifen und in einem selbstgeschriebenen Stück Code definieren, wie denn ein neues
TIMESTAMP(9) WITH TIMEZONE
-Feld aus Oracle in einer MSSQL-Struktur repräsentiert werden soll etc.Grüße
Biber
Moin moin,
Biber hat Recht: SELECT INTO neueTable from andereTable das ist die Syntax (in diese Richtung hatte sabines schon zu Beginn gedeutet).
Bedingung dabei ist, dass neueTable nicht schon existiert und es geht nur, wenn die Oracle-Datentypen bereits konvertiert in der andereTable vorliegen.
Damit kommen wir zum interessanten Teil: andereTable wird wohl eine (Oracle-) Tabelle sein aus einer (ORACLE-)Datenbank sein, die im SQL-Server mit "Linked Server" und ODBC eingebunden worden ist: damit wären diese Datenkonvertierungen bereits grössten Teils standardmässig erledigt...
...Aber vielleicht macht Dein Import-Script ja was gaaanz anderes und liest eine Textdatei, dann hast Du verloren, weil da keine Datentypen drin stehen. Verloren hast Du auch bei Strukturänderungen, in jedem Fall...
Vielleicht ist's aber ein schönes XML zusammen mit einem WSDL oder Du hast wirklich Zugriff auf den ORACLE-Katalog und kannst die Tabelle immer schön selber neu aufbauen (Biber hat's bereits gesagt!).
Aber sach mal toxduebel, wozu nächtens eine Tabelle neu erstellen und Daten aus Oracle abziehen? Eine Datenbank ist eigentlich da um Daten zu speichern, nicht um sie jedesmal auf's Neue zu verwerfen...
Biber hat Recht: SELECT INTO neueTable from andereTable das ist die Syntax (in diese Richtung hatte sabines schon zu Beginn gedeutet).
Bedingung dabei ist, dass neueTable nicht schon existiert und es geht nur, wenn die Oracle-Datentypen bereits konvertiert in der andereTable vorliegen.
Damit kommen wir zum interessanten Teil: andereTable wird wohl eine (Oracle-) Tabelle sein aus einer (ORACLE-)Datenbank sein, die im SQL-Server mit "Linked Server" und ODBC eingebunden worden ist: damit wären diese Datenkonvertierungen bereits grössten Teils standardmässig erledigt...
...Aber vielleicht macht Dein Import-Script ja was gaaanz anderes und liest eine Textdatei, dann hast Du verloren, weil da keine Datentypen drin stehen. Verloren hast Du auch bei Strukturänderungen, in jedem Fall...
Vielleicht ist's aber ein schönes XML zusammen mit einem WSDL oder Du hast wirklich Zugriff auf den ORACLE-Katalog und kannst die Tabelle immer schön selber neu aufbauen (Biber hat's bereits gesagt!).
Aber sach mal toxduebel, wozu nächtens eine Tabelle neu erstellen und Daten aus Oracle abziehen? Eine Datenbank ist eigentlich da um Daten zu speichern, nicht um sie jedesmal auf's Neue zu verwerfen...