mymomo
Goto Top

MSSQL - ein Datensatz aus jeder Tabelle einer Datenbank

Moin!

Ist es möglich aus jeder vorhandenen Tabelle einer Datenbank einen (oder bestenfalls sagen wir mal 5) Datensatz auszulesen?
Schwierigkeit: die Namen der Tabellen sind unbekannt

Content-ID: 418551

Url: https://administrator.de/contentid/418551

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

akretschmer
akretschmer 15.02.2019 um 21:54:35 Uhr
Goto Top
Die Namen der vorhandenen Tabellen zu ermitteln ist eher trivial - dazu gibt es das information_schema. Aber wie soll das Resultat ausehen? Manche Tabellen haben 2 Spalten, manche 300. Und manche gar 42!

Deine Frage klingt, sorry, als ob Du keinerlei Ahnung hättest,was eine relationale DB ist.
GrueneSosseMitSpeck
GrueneSosseMitSpeck 16.02.2019 um 14:00:51 Uhr
Goto Top
zur ersten Frage erstmal ganz klar "JA". SQL ist übrigens bei Microsoft sehr schön dokumentiert... aber das hier ist gewissermaßen für Newbies:

select top(1) * from <Tabellenname>

oder

select top(5) * from <Tabellenname>
Crusher79
Crusher79 16.02.2019 aktualisiert um 19:22:05 Uhr
Goto Top
Um <Tabellenname> mit leben zu füllen:

select * from [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_TYPE = 'BASE TABLE'

Dann kannst du je nach DB zwischen 10 und 900 Tabelle rausbekommen.......


Könnte jetzt noch Cursor o.ä. aufführen, um die Namen zu durchbrowsen und für jede Tabelle einen Datensatz rauszuholen. Wo liegt denn bitte aber der Sinn dahinter?

Mitunter hat man Glück und sieht die Zusammenhänge. Normal hat man Primär und Fremdschlüssel. Ohne SQL Grundlagen hast du einfach viele, viele, viele Datensätze.

Die Abfrage schreib ich dir binnen paar Minuten.

mfg Crusher
MadMax
MadMax 18.02.2019 um 12:55:17 Uhr
Goto Top
Moin mymomo,

Du meinst sowas?
declare	@nsql nvarchar (max) = ''  
select @nsql = @nsql + 'select top (5) * from ' + quotename (name) + '; ' from sys.tables  
exec sp_executesql @nsql

Gruß, Mad Max
mymomo
mymomo 18.02.2019 um 15:56:00 Uhr
Goto Top
das schaut sehr gut aus, vielen Dank!

Das die Daten zusammenhangslos sind, ist sogar gar nicht so schlecht. Das hilft mir schon weiter.