AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Insert in Tabelle mit unterschiedlichen Spalten
Thema durchsuchen
Ansicht
Themen-Optionen

Insert in Tabelle mit unterschiedlichen Spalten

Ein Thema von Sven95 · begonnen am 6. Okt 2015 · letzter Beitrag vom 7. Okt 2015
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 15:37
Bin mir nicht sicher, ob ich Deine Aufgabenstellung richtig verstehe:

Du suchst ein Statement, das für beliebige Tabellen die Daten in beliebige Tabellen kopieren kann, bei denen die Tabellenstruktur beliebig ähnlich oder auch beliebig unterschiedlich sein kann, aber gewisse Ähnlichkeiten im Tabellenaufbau und bei den Datentypen in der Regel vorhanden sein können?

(Ist jetzt vermutlich überspitzt formuliert, aber trifft das so inetwa zu?)

Hilft Dir eventuell das INFORMATION_SCHEMA?
  Mit Zitat antworten Zitat
Sven95

Registriert seit: 4. Sep 2014
7 Beiträge
 
#2

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 15:41
Genau, es sind immer 2 Tabellen die sich in gewisser Weise ähneln. Also anhand von Spaltenbezeichnern und Datentyp. Doch es kann vorkommen, dass in der Tabelle in die eingefügt werden soll Spalten existieren die in der anderen nicht existieren also muss irgendwie geprüft werden das die Werte der Spalten in die dafür vorgesehene, identische Spalte geschrieben werden.

Ich werd' mir das mal anschauen, danke !
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 15:42
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 15:48
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.
Meinst Du nicht eher select * from <tabelle> where 1 = 2
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 15:54
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.
Meinst Du nicht eher select * from <tabelle> where 1 = 2
O, ja. Natürlich so herum.

Wieso gibts in DP-Editor keine SQL-Syntax-Check
Windows Vista - Eine neue Erfahrung in Fehlern.
  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
 
#6

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:53
Einen SQL-Syntax-Check gibt es nicht, aber einen SQL-Syntax-HighLighter:
SQL-Code:
select 1 = 2
from <tabelle>
vs.
SQL-Code:
select *
from <tabelle>
where 1 = 2
Da fällt das schon eher ins Auge
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
Sven95

Registriert seit: 4. Sep 2014
7 Beiträge
 
#7

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 7. Okt 2015, 09:11
Erstmal Danke für alle Anworten und Sorry, dass ich mich gestern nichtmehr gemeldet hab.

Ich glaub ich habe jetzt eine passende Lösung:

Code:
DECLARE
  @vNew = char(8000)
  @vOld = char(8000)

set @vNew = (SELECT SUBSTRING (
                                (SELECT ',' + QUOTENAME(COLUMN_NAME)
                                 FROM INFORMATION_SCHEMA.COLUMNS
                                 WHERE TABLE_NAME = 'Tabelle A' and COLUMN_NAME != 'ID'
                                 ORDER BY ORDINAL_POSITION
                                 FOR XML path('')
                                ), 3, 2000000
                              )
            )

set @vNew = (SELECT SUBSTRING (
                                (SELECT ',' + QUOTENAME(COLUMN_NAME)
                                 FROM INFORMATION_SCHEMA.COLUMNS cc
                                 INNER JOIN INFORMATION_SCHEMA.COLUMNS c on cc.column_name = c.Column_name
                                 WHERE cc.TABLE_NAME = 'Tabelle B' and c.TABLE_NAME = 'Tabelle A' and cc.COLUMN_NAME != 'ID' and cc.COLUMN_NAME = c.COLUMN_NAME
                                 ORDER BY ORDINAL_POSITION
                                 FOR XML path('')
                                ), 3, 2000000
                              )
            )

EXECUTE('INSERT INTO Tabelle B ('+@vNew+')
         SELECT '+@vOLD+'
         FROM Tabelle A')
Das SELECT SUBSTRING aus der INFORMATION_SCHEMA.COLUMNS stammt vom Grundgerüst her von
http://stackoverflow.com/questions/2...ecified-when-a
  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 02:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz