MS SQL "INSERT Skript" Generator?



  • Kennt jemand von euch ein Tool, welches aus dem Inhalt von ausgewählten Tabellen in einer MS SQL Server Datenbank hübsche "INSERT Skripte" erzeugt?

    Skripte für die Struktur der Tabellen, Indexe, Trigger etc. kann ja das Management Studio erzeugen, aber für den Inhalt finde ich da irgendwie nichts...



  • Ich kopiere die tatsächlichen Daten aus dem Mgmt-Studio ins MS Excel. Dort füge ich dann vor, und zwischen allen Spalten jeweils eine weitere ein. Dann fülle ich das für die erste Zeile aus und kopiere sie nach unten. Alles markieren und ab in den Text-Editor => fertig.

    MfG SideWinder



  • Einen Scripterzeuger kenne ich zwar nicht (hm da gab es mal was das Scripte aus den Unterschiedlichen DBS erzeugt aber ich weiß den Namen nicht mehr) aber bei SQLSERVER ist
    Daten importieren und exportieren (64-Bit)
    dabei.
    Damit geht es super.



  • http://www.pcfreunde.de/download/d5499/sql-scripter/
    Das vielleicht.
    http://www.insidesql.org/beitraege/administration/ddl-skripte-generieren
    oder das.

    Alles ungetestet.
    Kannst ja dann mal ein Feedback geben.



  • <flame on="on">
    MySQL is eh viel besser.
    Das hat ein mysqldump tool und kan das von Haus aus.
    </flame>
    😉

    Aber mal ernsthaft:
    So ein simples Tool hat man doch auch in null,nix selbst gemacht, oder?

    Mit PHP (weil einfach für Dummy Code) mal anskizziert:

    $conn = new PDO($dsn, $user, $pw);
    $tables = $conn->query('SHOW TABLES;')->fetch-All(PDO::FETCH_NUM);
    foreach($tables as $table) {
      $table_fields = $conn->query(sprintf('DESC %s;', $table[0]))->fetchAll(PDO::FETCH_OBJ);
      //! Datentypen auswerten ...
      $table_rows = $conn->query(sprintf('SELECT * FROM %s;', $table[0]))->fetchAll(PDO::FETCH_OBJ);
      foreach($table_rows as $row) {
    
        echo "INSERT INTO <table> (<fields>) VALUES (<values>);\n"
      }
    }
    

    In C++, Java, etc. nimmst halt deine DB API, aber so schwer ist das nicht, behaupte ich...



  • @SideWinder & branleb:
    Ich kenne einige Wege wie man das machen kann, ohne für jede Zeile etwas "mit Hand" zu machen, wo ich aber überall pro Tabelle etwas "mit Hand" machen muss.

    Die Variante die ich bisher verwendet habe, ist noch einfacher, als das PHP Beispiel:

    -- CREATE TABLE #test (Row1 INT, Row2 NVARCHAR(100));
    -- INSERT #test (Row1, Row2) VALUES (1, 'foo');
    -- INSERT #test (Row1, Row2) VALUES (32, 'bar');
    -- INSERT #test (Row1, Row2) VALUES (32, 'test''o''matic');
    
    SELECT
        'INSERT #test (Row1, Row2) VALUES ('
    		+ CONVERT(NVARCHAR(MAX), Row1) + ', '
    		+ '''' + REPLACE(Row2, '''', '''''') + '''); '
    FROM
    	#test
    ORDER BY
    	Row1;
    

    Allerdings gehen für sowas auch immer ein paar Minuten drauf, und es ist einfach eine verdammt unnötige, dumme, lästige Arbeit.

    Und ein Tool zu schreiben, welches mit beliebigen Tabellen klarkommt, ist nichtmehr SO schnell erledigt, als dass ich rechtfertigen könnte das "mal eben" in der Arbeit zu machen.

    Aber vielleicht ein Kandidat für mein erstes SourceForge Projekt 🙂



  • Unix-Tom schrieb:

    Daten importieren und exportieren (64-Bit)

    Das Ding kenne ich, aber ich hab keine Ahnung, wie man damit Daten als SQL-Script exportieren könnte.

    Klar, man kann damit in irgendein Format exportieren was man als File rumkopieren, und dann woanders wieder mit dem Tool importieren kann. Ich suche aber etwas was mir wirklich ein SQL Skript erzeugt.

    Die wichtigsten Grund sind weil es praktisch ist, gut lesbar, gut Revision-Control-kompatibel, und einfach als Init-Skript in eine Applikation integrierbar.


Anmelden zum Antworten