Cómo transferir sus datos sql
Además de utilizar la INSERT y ACTUALIZACIÓN declaraciones en SQL, puede agregar datos a una tabla o vista usando el MERGE comunicado. Puedes MERGE datos de una tabla de origen o ver en una tabla de destino o punto de vista.
los MERGE puede o bien insertar nuevas filas en la tabla de destino o actualizar filas existentes. MERGE es una manera conveniente de tomar los datos que ya existe en algún lugar de una base de datos y copiarlo a una nueva ubicación.
Por ejemplo, considere una base de datos de laboratorio veterinario. Supongamos que algunas personas en la tabla EMPLOYEE son los vendedores que han tomado las órdenes, mientras que otros son empleados que no son de ventas o vendedores que aún no han tomado una orden. El año que acaba de concluir ha sido rentable, y que desea compartir parte de ese éxito con los empleados.
Usted decide dar un bono de $ 100 a todos los que han tenido al menos un orden y un bono de $ 50 a todos los demás. En primer lugar, se crea una tabla BONUS e insertar en ella un registro para cada empleado que aparece al menos una vez en la tabla PEDIDOS, asignando cada registro un valor por defecto de bono de $ 100.
Luego, si desea utilizar el MERGE declaración para insertar nuevos registros para aquellos empleados que no han tomado las órdenes, dándoles $ 50 bonos. Aquí hay algo de código que crea y llena la tabla BONUS:
CREAR TABLA BONUS (EmployeeName PERSONAJE (30) PRIMARY KEY, Bono NUMERICDEFAULT 100) -Insertar EN BONUS (EmployeeName) (SELECT EmployeeName DE EMPLEADO, ORDERSWHERE EMPLOYEE.EmployeeName = ORDERS.SalespersonGROUP POR EMPLOYEE.EmployeeName) -
Ahora puede consultar la tabla BONUS para ver lo que tiene:
* SELECT FROM -EmployeeName Bono ------------ ------------- Brynna Jones100Chris Bancroft 100Greg Bosser100Kyle Weeks100
Ahora, mediante la ejecución de una MERGE declaración, le puede dar $ 50 bonos con el resto de los empleados:
Combinar en BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName) CUANDO NO MATCHED ENTONCES INSERTAR (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -
Los registros de la gente en la tabla EMPLOYEE que no coinciden con los registros para las personas que ya están en la tabla BONUS ahora se insertan en la tabla BONUS. Ahora una consulta de la tabla BONUS da el siguiente resultado:
* SELECT FROM -EmployeeName Bono -------------- ----------- Brynna Jones100Chris Bancroft 100Greg Bosser100Kyle Weeks100Neth Doze 50Matt Bak 50Sam Saylor50Nic Foster50
Los primeros cuatro discos, que fueron creadas con el INSERT declaración, están en orden alfabético por el nombre del empleado. El resto de los registros, añadido por el MERGE declaración, aparecerá en el orden que se enumeran en la tabla EMPLOYEE.
los MERGE declaración es una adición relativamente nueva a SQL y sin embargo no puede estar avalado por algunos productos DBMS. Incluso más reciente es una capacidad adicional de MERGE añadido en SQL: 2011, paradójicamente lo que le permite eliminar registros con un MERGE comunicado.
Supongamos que, después de hacer el INSERT, usted decide que no quiere dar bonificaciones a personas que han tomado al menos un orden después de todo, pero usted quiere dar un bono de $ 50 a todos los demás. Puede eliminar las bonificaciones de ventas y añadir las primas no-ventas con el siguiente MERGE declaración:
Combinar en BONUSUSING EMPLOYEEON (BONUS.EmployeeName = EMPLOYEE.EmployeeName) cuando se combina ENTONCES NO DELETEWHEN MATCHED ENTONCES INSERTAR (BONUS.EmployeeName, BONUS.bonus) VALUES (EMPLOYEE.EmployeeName, 50) -
El resultado es
* SELECT DE BONUS-EmployeeName Bono -------------- ----------- Neth Doze 50Matt Bak 50Sam Saylor50Nic Foster50