Tengo una base de datos llamada foo y una base de datos llamada barra. Tengo una tabla en foo llamada tblFoobar que quiero mover (datos y todo) a la barra de base de datos desde la base de datos foo. ¿Cuál es la declaración de SQL para hacer esto?Copie tablas de una base de datos a otra en SQL Server
Respuesta
¿En SQL Server? y en el mismo servidor de base de datos? Use el nombre de tres partes.
INSERT INTO bar..tblFoobar(*fieldlist*)
SELECT *fieldlist* FROM foo..tblFoobar
Esto solo mueve los datos. Si desea mover la definición de la tabla (y otros atributos como permisos e índices), tendrá que hacer algo más.
Esto debería funcionar:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
Será no constaints copia, incumplimientos o índices. La tabla creada será no tiene un índice agrupado.
otra posibilidad:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
Si existe la tabla de destino y está vacía.
¿Hay algún problema si primero copia la estructura de la tabla base (campos y datos) y luego aplica un script * patch * para crear permisos, índices, restricciones y propiedades extendidas? – leoinfo
Esto no insertará valores para columnas de identidad en SQL Server 2008. Eso solo está permitido cuando utiliza una lista de columnas y IDENTITY_INSERT está activado para la tabla de destino. –
@Lucas - Estás "medio" bien :). Sin embargo, la primera instrucción SQL copia TODOS los datos, incluidos los valores dentro de las columnas de identidad. Como dije, las restricciones no se crean. Pero pueden ser fácilmente guionadas en el DB de origen y aplicarse al DB de destino una vez que se muevan todos los datos. – leoinfo
Script, el
create table
en el estudio de administración, ejecute esa secuencia de comandos en la barra para crear la tabla. (Haga clic derecho en la tabla en el Explorador de objetos, mesa de script como, crear a ...)INSERT bar.[schema].table SELECT * FROM foo.[schema].table
Me gusta este enfoque. Sin embargo, seleccionar * no funcionará si hay una columna de identidad, necesitará enumerar explícitamente los nombres de las columnas. También deberá hacer 'SET IDENTITY_INSERT TblName ON' en ese caso. – JeremyWeir
SQL Server Management Studio de tarea "Importar datos" (botón derecho del ratón sobre el nombre de DB, entonces tareas) hará la mayor parte de esto por ti. Ejecútelo desde la base de datos en la que desea copiar los datos.
Si las tablas no existen, las creará para usted, pero es probable que deba volver a crear cualquier índice y tal. Si las tablas existen, agregará los nuevos datos de forma predeterminada, pero puede ajustar eso (editar asignaciones) para que elimine todos los datos existentes.
Uso esto todo el tiempo y funciona bastante bien.
parece que no puedo encontrar esta opción. ¿Hay alguna versión específica aquí? – Nerrve
parece estar solo disponible en la edición de 2008 – Nerrve
Realmente no se puede decir que sea una mejor respuesta en general. No se puede utilizar para la automatización desde un script, por ejemplo. Por cierto, el autor pidió específicamente una "declaración de SQL ...". Pero, por supuesto, es una gran respuesta, pero no una mejor;). – grizzly
También puede utilizar el Generate SQL Server Scripts Wizard para ayudar a guiar la creación del guión de SQL que se puede hacer lo siguiente:
- copiar el esquema de la tabla
- cualquier restricción (identidad, valores por defecto, etc)
- datos dentro de la tabla
- y muchas otras opciones si es necesario
Buen flujo de trabajo de ejemplo para SQL Server 2008 con capturas de pantalla mostradas here.
Ver mis comentarios arriba: "¿Cómo obtuvo esto 508/171 Votos y Ryan?" 11 de octubre de 2011 a las 23:41 "¿Responder solo obtener 13 hasta la fecha?!? Ryan es la * única respuesta * que la respuesta es la op . * completamente *. * Porque * maneja estos escenarios (que, por cierto, el OP NO excluía de su q.): a) Identidad (* muy * común), b) Restricciones, c) Disparadores, d) Índices, e) Permisos, d) copiar Esquema Y Datos (Sugerencia: la parte "y todos" de las operaciones "(datos y todo)" también implica el Esquema.) y e) genera una "declaración SQL" que especificó el operador incluso si no quiso decir que literalmente es mejor tener que no ". – Tom
Nota: Esta respuesta solo es práctica cuando # de Filas no son "excesivas" (es decir, tablas de búsqueda/transacción pequeña) y no hay valores de columna "grandes". Para ellos, usaría la Respuesta de Ryan solo para generar el Script para la Creación de Tabla (incluyendo Atributos de Columna y subobjetos), y luego usaría la Respuesta "Insertar en Seleccionar" de David B. Para tablas individuales (en lugar de Ryan's A), también puede usar SSMS, Object Explorer, Right-Click Table, Script Table as, CREATE To, pero primero debe asegurarse de que Tools, Options, SQL Server Object Explorer, las opciones de scripting sean establecer como deseado. – Tom
Usted puede ir con esta forma: (un ejemplo general)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
Además, si usted necesita para generar los nombres de columna, así que poner en la cláusula de inserción, utilice:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
Copiar el resultado y pegar en la ventana de consulta para representar los nombres de columna de la tabla e incluso esto excluirá la columna de identidad también:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
Recuerde que la secuencia de comandos para copiar filas funcionará si las bases de datos pertenecen a la misma ubicación.
Puede intentarlo.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
El nombre del servidor es opcional si ambos DB están en el mismo servidor.
Si se trata de una tabla sólo entonces todo lo que necesita hacer es
- Guión definición de la tabla
- Crear nueva tabla en otra base de datos
- reglas Actualizar, índices, permisos y dichos datos de importación
- (varios insertar en ejemplos ya se muestran arriba)
Una cosa que tendrá que considerar es oth actualizaciones de er, como la migración de otros objetos en el futuro. Tenga en cuenta que sus tablas de origen y de destino no tienen el mismo nombre. Esto significa que también deberá realizar cambios si tiene objetos dependientes, como vistas, procedimientos almacenados y otros.
Con uno o más objetos puede ir manualmente sin problemas. Sin embargo, cuando hay más que unas pocas actualizaciones, las herramientas de comparación de terceros son muy útiles. En este momento estoy usando ApexSQL Diff para las migraciones de esquema, pero no se puede equivocar con ninguna otra herramienta que exista.
de datos de copia
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details
Si hay tabla existente y que quiere copiar sólo los datos, podemos tratar esta consulta.
inserción en Destination_Existing_Tbl seleccionar col1, col2 DE Source_Tbl
- 1. Copie la tabla de una base de datos a otra
- 2. Copie una columna de una base de datos a otra
- 3. Mover una tabla de una base de datos a otra base de datos SQL Server
- 4. ¿Crear una base de datos desde otra base de datos?
- 5. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 6. mySQL - Copie las filas de una base de datos a otra con identificadores automáticos de incremento
- 7. ¿Actualizar la tabla de la base de datos de una tabla de base de datos de SQL Server a otra?
- 8. ¿Cómo seleccionar datos de una tabla desde otra base de datos en SQL Server?
- 9. ¿Cómo se migran los diagramas de la base de datos de SQL Server a otra base de datos?
- 10. Copie todo el contenido de la base de datos (esquema y datos)
- 11. Uso de tablas temporales en SQL Server
- 12. Copie una matriz de cadenas a otra
- 13. Copia de la base de datos de SQL Server Express a otra computadora
- 14. Copie una base de datos postgres sin permisos LOCK
- 15. ¿Cómo creo una base de datos programáticamente en SQL Server?
- 16. Múltiples idiomas en una base de datos - SQL Server 2005
- 17. Usando una base de datos .MDF SQL Server con ASP.NET versus usando SQL Server
- 18. Base de datos de secuencias de comandos SQL-Server
- 19. Crear una base de datos mediante programación en SQL Server
- 20. Base de datos SQL Azure usando SQL Server Management Studio
- 21. ¿Existe una práctica estándar para sincronizar tablas de SQL Server?
- 22. Cómo copiar vistas de una base de datos a otra base de datos
- 23. Cómo colocar todas las tablas de una base de datos en SQL Server 2005 en una declaración, excepto una tabla
- 24. Restaurar la base de datos de SQL Server 2008 a SQL Server 2000
- 25. ¿Hay alguna manera en SQL Server de identificar de forma exclusiva una base de datos?
- 26. copiar una base de datos dentro de SQL Server Express?
- 27. Conectar Access 2007 a SQL Server 2008 Base de datos
- 28. ¿Cómo convertir la base de datos de SQL Server 2008 R2 a SQL Server 2012?
- 29. Copie los datos de blobs de una tabla a otra en MySQL
- 30. Desventajas del uso de SQL Server Compact frente a la base de datos SQL Server dedicada
También tendrá que establecer por separado permisos de mesa, creo. –
Sí, e índices ... etc. –
Si necesita hacer inserciones de identidad también, el Asistente de importación de datos tiene una opción para eso ^^ - refiriéndose a la otra respuesta –