Pregunta

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?

¿Fue útil?

Solución

¿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), deberá hacer otra cosa.

Otros consejos

Importar datos de SQL Server Management Studio " La tarea (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 que elimine todos los datos existentes.

Lo uso todo el tiempo y funciona bastante bien.

Esto debería funcionar:

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

no copiará constantes, valores predeterminados o índices. La tabla creada no tendrá un índice agrupado.

Alternativamente podría:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

Si su tabla de destino existe y está vacía.

Si es solo una tabla, entonces todo lo que necesita hacer es

  • Definición de tabla de script
  • Crear nueva tabla en otra base de datos
  • Actualizar reglas, índices, permisos y demás
  • Importar datos (varias inserciones en ejemplos ya se muestran arriba)

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 puede equivocarse con ningún otro herramienta por ahí.

  1. Script el crear tabla en el estudio de administración, ejecute ese script 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 script como, crear para ...)

  2. INSERT bar. [esquema] .table SELECT * FROM foo. [esquema] .table

También puede usar Asistente para generar scripts de SQL Server para ayudar a guiar la creación de scripts de SQL que pueden hacer lo siguiente:

  • copia el esquema de la tabla
  • cualquier restricción (identidad, valores predeterminados, 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 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 ambas bases de datos están en el mismo servidor.

Si hay una tabla existente y queremos copiar solo datos, podemos probar esta consulta.

insertar en Destination_Existing_Tbl select col1, col2 FROM Source_Tbl

Copiar datos

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top