Principale utente con più risposte
generatore di script per insert

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
Risposte
-
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
- Modificato Sergio GovoniMVP, Moderator mercoledì 7 febbraio 2018 22:15
- Contrassegnato come risposta Beppe1964 giovedì 8 febbraio 2018 06:42
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 ? -
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
-
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
-
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ì.
-
-
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
- Modificato Sergio GovoniMVP, Moderator lunedì 5 febbraio 2018 22:15
- Proposto come risposta Fabrizio GiammariniMVP, Moderator martedì 6 febbraio 2018 08:55
-
-
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
- Modificato Sergio GovoniMVP, Moderator mercoledì 7 febbraio 2018 22:15
- Contrassegnato come risposta Beppe1964 giovedì 8 febbraio 2018 06:42
-