none
Tabellenüberschriften einer Tabelle ändern RRS feed

  • Frage

  • Hallo, NG,

    irgendwie stehe ich auf dem Schlauch. Ich habe eine Excel-Datei, die ich in den SQL-Express importiere (in regelmäßigen Abständen, die Überschriften der Excel-Tabelle sind immer gleich). Für die weitere Verarbeitung der Daten wäre es günstig, wenn ich die Spaltennamen der importierten Excel-Tabelle automatisiert umbenennen könnte, ich habe im SQL-Server eine weitere Tabelle, in der die alten und die neuen Titel für die Excel-Tabelle stehen, das sähe so aus:

    Excel-Überschrift1 - Neue Ü1
    Excel-Überschrift2 - Neue Ü2

    Es sollte doch eigentlich ganz einfach sein, per T-SQL die Überschriften der Importtabelle auszutauschen, aber ich komme nicht drauf, wie.

    Ich hoffe, Ihr schon! Danke schon mal!

    Gruß

    Susanne

    Donnerstag, 21. Oktober 2010 12:26

Alle Antworten

  • Hallo Susanne,
    wäre es evtl. eine Möglichkeit die Tabelle über eine View zu kapseln und die Struktur zu erhalten?

    Einen schönen Tag noch,
    Christoph


    Microsoft SQL Server MVP
    http://www.insidesql.org/blogs/cmu

    Donnerstag, 21. Oktober 2010 13:30
    Beantworter
  • create table t1 (id int, value varchar(8),value2 varchar(8))
    go
    create table t2 (id int identity(1,1), objname sysname, [newname] sysname)
    go
    insert t2(objname,newname)
    values('dbo.t1.value','v_a_l_u_e')
    ,('dbo.t1.value2','v_a_l_u_e2')
    go
    
    declare @objtype sysname = N'COLUMN'
    declare @objname sysname
    declare @newname sysname
    
    declare columns_cursor cursor for
    select objname, [newname] from t2
    
    open columns_cursor
    
    fetch next from columns_cursor 
    into @objname, @newname
    
    while @@FETCH_STATUS = 0
    begin
    	exec sp_rename @objname, @newname,@objtype
    
    	fetch next from columns_cursor 
    	into @objname, @newname
    end
    go
    close columns_cursor
    deallocate columns_cursor
    go
    select * from t1
    go
    drop table t1
    go
    drop table t2
    go
     

    Gruß Yury
    • Als Antwort vorgeschlagen Yury Iwtschenko Freitag, 5. November 2010 20:21
    Donnerstag, 21. Oktober 2010 13:30
  • Wie sieht denn diese "weitere Verarbeitung" genau aus?
    Warum importierst Du nicht erst in eine temporäre Staging Tabelle und von dort aus in die finale Tabelle? Klingt so, als ob Du Dir damit diese ganze Umbenennerei ersparen könntest. Oder legt Du jedesmal eine neue Zieltabelle an?
    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Freitag, 22. Oktober 2010 07:07