Estamos escribiendo una nueva aplicación, y durante las pruebas, necesitaremos un montón de datos ficticios. He agregado esos datos usando MS Access para volcar archivos de Excel en las tablas relevantes.
De vez en cuando, queremos "actualizar" las tablas relevantes, lo que significa eliminarlas todas, volver a crearlas y ejecutar una consulta de anexos de MS Access guardada.
La primera parte (soltar y volver a crear) es un script sql fácil, pero la última parte me da escalofríos. Quiero un solo script de configuración que tenga un montón de INSERT para regenerar los datos ficticios.
Tengo los datos en las tablas ahora. ¿Cuál es la mejor manera de generar automáticamente una gran lista de instrucciones INSERT a partir de ese conjunto de datos?
La única forma en que puedo pensar en hacerlo es guardar la tabla en una hoja de Excel y luego escribir una fórmula de Excel para crear un INSERT para cada fila, que seguramente no es la mejor manera.
Estoy usando 2008 Management Studio para conectarme a una base de datos SQL Server 2005.
fuente
Respuestas:
Microsoft debería anunciar esta funcionalidad de SSMS 2008. La característica que está buscando está integrada en la utilidad Generar secuencia de comandos, pero la funcionalidad está desactivada de manera predeterminada y debe habilitarse al crear una secuencia de comandos en una tabla.
Este es un recorrido rápido para generar las
INSERT
declaraciones para todos los datos en su tabla, sin usar scripts o complementos para SQL Management Studio 2008:Luego obtendrá la
CREATE TABLE
declaración y todas lasINSERT
declaraciones de los datos directamente de SSMS.fuente
Data only
y encuentra unCyclic dependencies found
error, cambie aSchema and data
para evitar el error. Sucede en Management Studio v17.Utilizamos este procedimiento almacenado: le permite apuntar a tablas específicas y usar cláusulas where. Puedes encontrar el texto aquí .
Por ejemplo, te permite hacer esto:
Código fuente copiado del enlace:
fuente
Como mencionó @Mike Ritacco pero actualizado para SSMS 2008 R2
Luego obtendrá todas las declaraciones INSERT para los datos directamente de SSMS.
EDITAR 2016-10-25 SQL Server 2016 / SSMS 13.0.15900.1
Haga clic derecho en el nombre de la base de datos
Elija Tareas> Generar guiones
Dependiendo de su configuración, la página de introducción puede mostrar o no
Elija 'Seleccionar objetos de base de datos específicos',
Expanda la vista de árbol y verifique las tablas relevantes
Haga clic en Siguiente
Haga clic en avanzado
En la sección General, elija la opción adecuada para 'Tipos de datos para script'
Haga clic en Aceptar
Elija si desea que la salida vaya a una nueva consulta, el portapapeles o un archivo
Haga clic en Siguiente dos veces
Su guión se prepara de acuerdo con la configuración que seleccionó anteriormente
Haga clic en Finalizar
fuente
Esto también se puede hacer usando
Visual Studio
(al menos en la versión 2013 en adelante).En VS 2013 también es posible filtrar la lista de filas en las que se basa la instrucción de inserción, esto es algo que no es posible en SSMS, por lo que sé.
Realice los siguientes pasos:
Esto creará las instrucciones de inserción (condicional) para la tabla seleccionada en la ventana o archivo activo.
Los botones "Filtro" y "Script" Visual Studio 2013 :
fuente
Puede usar el paquete de herramientas SSMS (disponible para SQL Server 2005 y 2008). Viene con una función para generar instrucciones de inserción.
http://www.ssmstoolspack.com/
fuente
Estoy usando SSMS 2008 versión 10.0.5500.0. En esta versión, como parte del asistente Generar secuencias de comandos, en lugar de un botón Avanzado, aparece la siguiente pantalla. En este caso, quería solo los datos insertados y no crear declaraciones, así que tuve que cambiar las dos propiedades marcadas con un círculo
fuente
Procedimiento almacenado de Jane Dallaway: http://docs.google.com/leaf?id=0B_AkC4ZdTI9tNWVmZWU3NzAtMWY1My00NjgwLWI3ZjQtMTY1NDMxYzBhYzgx&hl=en_GB . La documentación es una serie de publicaciones de blog: https://www.google.com/search?q=spu_generateinsert&as_sitesearch=http%3A%2F%2Fjane.dallaway.com
fuente
Si necesita un acceso programático, puede utilizar un procedimiento almacenado de código abierto `GenerateInsert.
INSERTAR generador (es) de declaraciones
Solo como un ejemplo simple y rápido, para generar instrucciones INSERT para una tabla,
AdventureWorks.Person.AddressType
ejecute las siguientes instrucciones:Esto generará el siguiente script:
fuente
El primer enlace a sp_generate_inserts es bastante bueno, aquí hay una versión realmente simple:
En mi sistema, obtengo este resultado:
fuente
Mi contribución al problema, un generador de scripts Powershell INSERT que le permite crear scripts en varias tablas sin tener que usar la engorrosa interfaz gráfica de usuario de SSMS. Excelente para persistir rápidamente los datos "semilla" en el control de origen.
Por defecto, el script INSERT generado será "SeedData.sql" en la misma carpeta que el script.
Necesitará los ensamblados de SQL Server Management Objects instalados, que deberían estar allí si tiene instalado SSMS.
fuente
No use insertos, use BCP
fuente
Quizás pueda probar el Asistente de publicación de SQL Server http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Tiene un asistente que lo ayuda a insertar instrucciones de script.
fuente
GenerateData es una herramienta increíble para esto. También es muy fácil hacer ajustes porque el código fuente está disponible para usted. Algunas características agradables:
fuente
Utilicé este script que puse en mi blog ( Procedimientos para generar instrucciones de inserción en el servidor sql ).
Hasta ahora me ha funcionado, aunque podrían ser errores que aún no he descubierto.
fuente
Yo uso sqlite para hacer esto. Lo encuentro muy, muy útil para crear bases de datos scratch / test.
sqlite3 foo.sqlite .dump > foo_as_a_bunch_of_inserts.sql
fuente
¿Ya tiene datos en una base de datos de producción? Si es así, puede configurar un período de actualización de los datos a través de DTS. Hacemos los nuestros semanalmente los fines de semana y es muy bueno tener datos limpios y reales cada semana para nuestras pruebas.
Si aún no tiene producción, entonces debe crear una base de datos que ellos quieran que desee (nueva). Luego, duplique esa base de datos y use esa base de datos recién creada como su entorno de prueba. Cuando desee la versión limpia, simplemente duplique su versión limpia nuevamente y Bob es su tío .
fuente
Si prefiere usar Hojas de cálculo de Google, use SeekWell para enviar la tabla a una Hoja, luego inserte filas en una programación, a medida que se agreguen a la Hoja.
Vea aquí el proceso paso a paso, o vea una demostración en video de la función aquí.
fuente
Hay muchos scripts buenos arriba para generar declaraciones de inserción, pero intenté uno de los míos para que sea lo más fácil de usar posible y también para poder hacer declaraciones ACTUALIZAR. + empaqueta el resultado listo para archivos .sql que se pueden almacenar por fecha.
Toma como entrada su instrucción SELECT normal con la cláusula WHERE, luego genera una lista de instrucciones Insert y declaraciones de actualización. Juntos forman una especie de SI NO EXISTE () INSERTAR OTRA ACTUALIZACIÓN También es útil cuando hay columnas no actualizables que necesitan exclusión de la instrucción final INSERTAR / ACTUALIZAR.
Otra cosa que puede hacer el siguiente script es: incluso puede manejar INNER JOINs con otras tablas como declaración de entrada para el proceso almacenado. Puede ser útil como la herramienta de administración de Release de un hombre pobre que se encuentra justo al alcance de su mano, donde está escribiendo las instrucciones sql SELECT todo el día.
publicación original: generar una declaración de ACTUALIZACIÓN en SQL Server para una tabla específica
fuente
¿por qué no solo hacer una copia de seguridad de los datos antes de trabajar con ellos y luego restaurarlos cuando desee que se actualicen?
si debe generar inserciones, intente: http://vyaskn.tripod.com/code.htm#inserts
fuente
No estoy seguro, si entiendo tu pregunta correctamente.
Si tiene datos en MS-Access, que desea mover a SQL Server, puede usar DTS.
Y supongo que podría usar el generador de perfiles SQL para ver todas las instrucciones INSERT.
fuente
También he investigado mucho sobre esto, pero no pude obtener la solución concreta para esto. Actualmente, el enfoque que sigo es copiar los contenidos en Excel del estudio SQL Server Managment y luego importar los datos a Oracle-TOAD y luego generar las instrucciones de inserción
fuente
Puede generar una declaración INSERT o MERGE con esta aplicación simple y gratuita que escribí hace unos años:
Data Script Writer (Aplicación de escritorio para Windows)
Además, escribí una publicación de blog sobre estas herramientas recientemente y un enfoque para aprovechar SSDT para una base de datos de implementación con datos. Obtenga más información:
Script y despliegue los datos para la base de datos del proyecto SSDT
fuente
Hice una utilidad fácil de usar, espero que disfrutes.
Si las instrucciones INSERT generadas se están truncados, comprobar la longitud del texto límite de los resultados en las opciones de gestión Studio:
Tools > Options
,Query Results > SQL Server > Results to Grid
"Los datos no XML" valor bajo "Número máximo de caracteres Obtenido".fuente