none
generatore di script per insert RRS feed

  • Domanda

  • Buon giorno a tutti,
    spesso su SSMS utilizzo il generatore di scripts che permette di scegliere una o più tabelle e generare script contenenti le istruzioni di insert che sono davvero molto comode per esportare dati da un db all'altro (tra l'altro con la possibilità di scegliere fra solo dati, solo struttura, dati e struttura). Questa funzionalità però non permette di impostare nessun tipo di filtro, quindi genera sempre una istruzione con tutti i record della tabella.

    Ho cercato un po' ma non sono riuscito a trovare la possibilità di eseguire la stessa operazione impostando una condizione where.

    Qualcuno sa dirmi se è possibile oppure se esiste un altro strumento che permetta di farlo?

    Io al momento utilizzo SSMS 2014.

    Grazie 1000.

    Beppe

    giovedì 25 gennaio 2018 10:52

Risposte

Tutte le risposte

  • Buonasera !
    Quale versione usi del SQL Server ?
    Io ho il SSMS su SQL Server vers. Express 2017.

    Prima procedura. Ho provato ad ottenere uno script. Clic destro sul nome del database, poi in attività, poi Genera Script, inizia una procedura guidata che mi  crea uno script, dove c'è il codice per ottenere la tabella che posso scegliere tra quelle presenti nel database, ma non c'è la possibilità di filtrare i dati.

    Seconda procedura. Se invece, aperto il database, clic destro sul nome della tabella, poi Crea script per tabella, poi Genera Codice per istruzione INSERT in (nuova finestra editor di query), poi ottengo un codice, che deve essere anche pulito da alcuni simboli.
    E' questa la procedura che segui ?  E con questa seconda procedura che hai problemi ?
    giovedì 25 gennaio 2018 14:23
  • Buonasera Robertlt69,
    la seconda procedura crea "solamente" un modello di istruzione insert.

    Io parlo della prima procedura che, per l'appunto, non da la possibilità di filtrare i dati. Chiedevo se qualcuno era a conoscenza (con la prima procedura o con altro metodo) della possibilità di ottenere quel risultato ma filtrando i dati.

    Beppe

    giovedì 25 gennaio 2018 14:55
  • Quella procedura guidata genera un codice sql che crea la tabella con i dati.

    Il tipo di comando è: INSERT ... VALUES.   Questo tipo di comando non prevede la clausola WHERE.

    L'ideale sarebbe avere una procedura guidata che esporti i dati usando il comando: INSERT INTO ... SELECT / FROM / WHERE.  In questo modo si chiederebbe all'utente di scegliersi il nuovo nome di tabella, ma confermando i stessi nomi di colonna, e riversarsi i dati presi da altra tabella, andando a scegliersi quali con la clausola WHERE.


    • Modificato RobertIt69 giovedì 25 gennaio 2018 16:28
    giovedì 25 gennaio 2018 16:14
  • Ho fatto una query sul mio programma, provando a spostare i record tra due database.   Questi database si trovano sulla stessa macchina, stessa istanza di SQL Server.

    Con il comando INSERT INTO (il nome del database che riceve, più tabella più campi) ... SELECT FROM WHERE  (il nome del database che esporta, più tabella più campi).

    Se l'obiettivo è spostare i dati tra i database, va bene anche così.

    giovedì 25 gennaio 2018 16:33
  • Anche io utilizzo INSERT INTO / SELECT ma in questo caso i db sono su server / reti differenti.

    Grazie lo stesso.

    Buona serata.

    Beppe

    giovedì 25 gennaio 2018 16:59
  • Ho cercato un po' ma non sono riuscito a trovare la possibilità di eseguire la stessa operazione impostando una condizione where.

    Qualcuno sa dirmi se è possibile oppure se esiste un altro strumento che permetta di farlo?

    Ciao,

    purtroppo lo strumento di Scripting di SSMS, pur essendo molto potente, non permette di specificare una clausola WHERE per filtrare i dati da includere nello script.

    Ho dato un'occhiata al tool di Scripting di Apex (https://www.apexsql.com/sql_tools_script.aspx), anche qui non vedo possibilità di filtro.

    Non è molto comodo, ma potresti agire sui comandi generati trasformandoli in INSERT/SELECT con WHERE.

    Altrimenti, non è la stessa cosa, ma potresti utilizzare una replica dei dati.. sulla replica puoi applicare filtri sia verticali che orizzontali.

    HTH

    Ciao


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn

    lunedì 5 febbraio 2018 22:14
    Moderatore
  • Ciao Sergio,
    grazie per la risposta.

    Perdona l'ignoranza ma.... cos'è una replica dei dati?

    Beppe

    mercoledì 7 febbraio 2018 11:52
  • Ciao,

    la replica è uno strumento potente che permette di mantenere sincronizzati database remoti, è costituita da servizi che consentono di copiare dati e distribuire oggetti da un database ad un altro, qui trovi un po' di informazioni: SQL Server Replication.

    Se vuoi approfondire, ti consiglio di guardare questi due ottimi screencast (canale UGISS su Vimeo) sui servizi di replica di SQL Server:

    Possono sembrare un po' datati :) ma i concetti di base sono attualissimi :)

    Buon divertimento!

    Ciao


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn



    mercoledì 7 febbraio 2018 22:11
    Moderatore
  • Grazie 1000 Sergio!

    Buona giornata.

    Beppe

    giovedì 8 febbraio 2018 06:42