Tengo una base de datos llamada foo y una base de datos llamada bar. 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 instrucción SQL para hacer esto?
Tengo una base de datos llamada foo y una base de datos llamada bar. 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 instrucción SQL para hacer esto?
Respuestas:
En SQL Server? y en el mismo servidor de base de datos? Use nombres 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.
La tarea "Importar datos" de SQL Server Management Studio (haga clic con el botón derecho en el nombre de la base de datos, luego las tareas) hará la mayor parte de esto por usted. Ejecútelo desde la base de datos en la que desea copiar los datos.
Si las tablas no existen, las creará para usted, pero probablemente tendrá que recrear cualquier índice y demás. Si las tablas existen, agregará los datos nuevos de forma predeterminada, pero puede ajustarlos (editar asignaciones) para eliminar todos los datos existentes.
Lo uso todo el tiempo y funciona bastante bien.
WHERE
condición usando la tarea Importar datos? No pude encontrar una manera de hacerlo.
Esto debería funcionar:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
Será no copiar constaints, incumplimientos o índices. La tabla creada no tendrá un índice agrupado.
Alternativamente, usted podría:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
Si su tabla de destino existe y está vacía.
INSERT INTO...
) funcionó para mí en Oracle.
Si solo es una tabla, entonces todo lo que necesita hacer es
Una cosa que tendrá que considerar es otras actualizaciones, como la migración de otros objetos en el futuro. Tenga en cuenta que sus tablas de origen y destino no tienen el mismo nombre. Esto significa que también tendrá que hacer cambios si depende de objetos como vistas, procedimientos almacenados y otros.
Con uno o varios 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 migraciones de esquemas, pero no puedes equivocarte con ninguna otra herramienta.
Guión del create table
Management Studio, ejecute esa secuencia de comandos en la barra para crear la tabla. (Haga clic con el botón derecho en la tabla en el explorador de objetos, la tabla de scripts como, crear para ...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
SET IDENTITY_INSERT TblName ON
en ese caso.
También puede usar el Asistente para generar scripts de SQL Server para ayudar a guiar la creación de scripts de SQL que pueden hacer lo siguiente:
Buen ejemplo de flujo de trabajo para SQL Server 2008 con capturas de pantalla que se muestran aquí .
Puede ir de esta manera: (un ejemplo general)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
Además, si necesita generar los nombres de columna y poner una cláusula de inserción, use:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
Copie el resultado y péguelo en la ventana de consulta para representar los nombres de columna de su tabla e incluso esto también excluirá la columna de identidad:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
Recuerde que el script para copiar filas funcionará si las bases de datos pertenecen a la misma ubicación.
Puedes probar esto.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
El nombre del servidor es opcional si ambos DB están en el mismo servidor.
Copiar datos
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details