Announcement

Collapse
No announcement yet.

Truncate für Anfänger

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Truncate für Anfänger

    Hallo,

    ich habe mehrere SQL Tabellen, die alle so anfangen:

    adressen_aa_ab
    adressen_ab_ac
    adressen_ac_ae

    usw.

    jetzt würde ich gerne wiessen,

    wie ich mit truncate alle tabellen leeren kann, die z.b. adressen_a....enthalten...

    ich hoffe ihr habe es verstanden
    lg
    michael

  • #2
    Willst Du das aus eine eigenen Anwendung heraus oder über ein DB-Frontend machen?!

    In einer Anwendung kannst Du Dir ja das SQL-Query z.B. mit Hilfe von StringBuilder selbst zusammenbauen und absetzen...

    Hilfe zu SQL-Befehlen gibt es sonst auch noch hier.

    Comment


    • #3
      Hallo,

      hier mein Vorschlag:
      Code:
      declare
      	@Exec varchar(8000) --@Exec varchar(max) bei SQL-Server 2005
      
      set @Exec = ''
      
      select @Exec = @Exec + 
      	' truncate table [' + table_catalog + '].[' + table_schema + '].[' + table_name + ']
      '
      from information_schema.tables
      where
      	table_name like 'adressen_a%'
      
      print @Exec
      --exec(@Exec)
      Die letzte Zeile führt dann das Ganze aus - deshalb zur Vorsicht auskommentiert. Wenn die Gesamtlänge des Strings größer werden kann als die 8000 Zeichen, dann musst Du einen Cursor benutzen mit dem gleichen SQL-Statement, und dann jede Zeile einzeln behandeln.

      Gruß
      Olaf

      Comment


      • #4
        Alle Angaben ohne Gewähr

        Code:
        exec sp_msforeachtable N'truncate table ''?'' ', @whereand = ' and o.name like ''adressen_a%'' '
        Bei den Anführungszeichen handelt es sich IMMER um einfache Anführungszeichen, die beim Fragezeichen und bei adressen_a% jeweils doppelt gesetzt werden müssen.
        Falls dieses hier nicht funktioniert, könnte folgendes schuld sein (was mir mal so auf die Schnelle einfällt): truncate geht nicht wegen foreign key oder Tabelle wird nicht gefunden weil Namensvergleich wegen Groß/Kleinschreibung nicht passt.

        bye,
        Helmut

        PS: nähere Infos zu sp_msforeachtable (sp_msforeachdb) findet man zB hier:
        http://www.dbazine.com/sql/sql-articles/larsen5

        Comment

        Working...
        X