Announcement

Collapse
No announcement yet.

Mssql if exist ....

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

  • Mssql if exist ....

    Hallo,

    bin neu in der MSSQL umgebung und habe direkt ma eine frage.

    und zwar habe ich eine tabelle X .
    die soll kopiert werden und als X_temp abgelegt werden
    dann editiere und arbeite ich mit X und will nacher nur über aufruf einer .bat datei die X_temp wieder zurückspielen.

    Nun sind meine kenntnise was das anbelangt nicht so groß und ich wollte ma anfrage wie das funktoiniert. was ich bis jetzt habe funktioniert leider nicht so richtig

    Code:
    SET Tabelle01=X
    SET temp=_temp
    
    osql -E -Q "USE DatenbankXY; IF NOT EXISTS(SELECT * FROM %Tabelle01%%temp%) SELECT * INTO %Tabelle01%%temp% FROM %Tabelle01%;"
    und ich möchte nur eine neue tabelle _temp mit den daten aus der ursprungsdatei generieren, wenn nicht schon eine _temp vorhanden ist aber die syntax daoben funktioniert so leider nicht

  • #2
    ob eine Tabelle existiert oder nicht muß in den Meta-Daten der DB nachgefragt werden...
    ungefähr so
    Code:
    osql -E -Q "USE DatenbankXY; IF NOT EXISTS(SELECT * FROM sysobjects WHERE Objectname = '''' + %Tabelle01%%temp%+ '''')
    SELECT * INTO %Tabelle01%%temp% FROM %Tabelle01%;"

    Comment


    • #3
      Hey danke für deine antwort,

      habe es direkt ausprobiert aber leider negativ. der sagt
      "Ungültiger Spaltenname 'Objectname'

      Code:
      osql -E -Q "USE DatenbankXY; IF NOT EXISTS (SELECT * FROM sysobjects WHERE Objectname = '''' + %Tabelle01%%temp%+ '''') SELECT * INTO 
      %Tabelle01%%temp% FROM %Tabelle01%;"

      Comment


      • #4
        Ein kurzer Test mit einem Abfragetool und "select top 1 * from sysobjects" hätte dir gleich gezeigt, dass der Spaltenname nicht "Objectname" sondern einfach "name" ist

        bye,
        Helmut

        Comment


        • #5
          das hier funktioniert aber leider auch nicht

          Code:
          osql -E -Q "USE DatenbankXY; IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = ''''+%Tabelle01%%temp%+'''') SELECT * INTO 
          %Tabelle01%%temp% FROM %Tabelle01%;"
          %Tabelle01% --> 100 % in der Datenbank vertreten.

          Folgender Fehler kommt "Ungültiger Spaltenname %Tabelle01%%temp%" ...


          edit:
          habe den fehler schon gefunden, es darf nicht '''' sondern muss ''' heißen trotzdem danke funktioniert nun

          jetzt funktioniert das jetzt kommt schon die nächste frage auf.
          ich checke ob sie NICHT vorhanden ist. wenn sie NICHT vorhanden ist, wird sie neu angelegt und befüllt. wenn sie jetzt aber vorhanden ist will ich sie nur nochmal neu befüllen wie funktioniert das mit dem if else bei osql?
          Zuletzt editiert von suerte; 13.08.2008, 07:58.

          Comment


          • #6
            Du machst statt dem ... IF NOT EXISTS ... ein ... IF EXISTS ... DROP TABLE .... und dann im zweiten Schritt dein SELECT * INTO ..., bei dem du nicht mehr prüfen musst, ob die Tabelle existiert, denn in diesem Fall hättest du sie ja gerade vorher gelöscht

            bye,
            Helmut

            Comment

            Working...
            X