Está en la página 1de 4

Prctica XV Administracin de Bases de datos 9 mayo de 2013 Introduccin: La transferencia de datos entre diferentes aplicaciones es una actividad comn.

Existen diversas formas de llevarlas a cabo con su debido cuidado pues siempre son actividades masivas. En esta prctica muestran conceptos asociados con importacin de datos de otras fuentes, Propsito del curso:

1. Esta prctica est directamente relacionada con el propsito de Disear y ejecutar actividades de administracin de base de datos que permitan conocer la problemtica generada en bases de datos operando.
Objetivos Particulares:

Actividades Transferencia entre tablas y entre bases de datos. 1. Para transferir datos entre tablas, en adventure Works, crear una tabla cat_categoria con los siguientes campos. categoriaID int <llave> categoria varchar(50) insertar en esta tabla los valores que tiene la tabla production.productcategory, verificando la correspondencia de datos y la tabla resultante. insert into dbo.cat_categoria (categoriaid, categoria) select ProductCategoryID, name from Production.ProductCategory

2. Crear base de datos nueva para almacenar resultados de otra base de datos.

1.

Crear una base de datos nueva llamada Aventura, en esta agregar una tabla con los siguientes campos: Envio int, cliente int, vendedor int, fecha date, producto int, total Money, cantidad int. Con la siguiente instruccin sql en cualquier pantalla, hacer el poblado.

insert Aventura.dbo.factura select ShipMethodID, CustomerID, SalesPersonID, ShipDate, ProductID, LineTotal, OrderQty from AdventureWorks.sales.SalesOrderHeader inner join AdventureWorks.sales.SalesOrderDetail on sales.SalesOrderDetail.SalesOrderID = sales.SalesOrderHeader.SalesOrderID Debe existir coincidencia de los datos seleccionados y luego insertados. Revisar los datos existentes en tabla destino: Select * from Aventura.dbo.factura Importacin de datos de fuentes externas: En este ejercicio indagaremos sobre la estructura de los datos de los cdigos postales de SEPOMEX, posteriormente los importaremos de dos maneras, directa y en tablas normalizadas y a travs de un archivo de Excel separado por comas, csv. 1. Revisar las tablas planas que ofrece SEPOMEX conteniendo colonias, cdigos postales, municipios. Sitio www.sepomex.gob.mx bajar cdigos postales de un estado. 2. Indagar en los datos en Excel verificando sus caractersticas y relaciones entre ellos.

Importacin de datos de fuentes externas con bulk insert: 1. En la base de datos de Aventura creada anteriormente crear una tabla CodigoPostal que almacene los datos contenidos en el archivo de un estado previamente bajado del sitio de SEPOMEX. 2. Realizar una importacin masiva verificando la coincidencia de los datos, ejemplo: Crear tabla CREATE TABLE CodigoPostal ( D_Codigo int, D_Asentamiento varchar(50), D_Tipo_Asentamiento varchar(50), D_Municipio varchar(50), D_Estado varchar(50), D_Ciudad varchar(50), D_Codigo_Postal int

) Verificar la coincidencia de columnas-campos con el archivo de Excel que bajaron de sepomex. Importarlo de manera masiva: BULK INSERT CodigoPostal FROM 'C:\Temp\Estado.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ) Importacin de datos de fuentes externas utilizando como intermediario un procedimiento almacenado, excel y una estructura diferente de tablas: 1. Analizando los datos en la tabla plana de un estado, encontramos que por cada asentamiento se pueden repetir los cdigos postales, el municipio, ciudad y obvimente el estado. 2. Diseamos una estructura de tablas difernte que no permita datos repetidos de acuerdo al principio de normalizacin, quedando como sigue:

+ esta estructura solamente repite el CP en la colonia (asentamiento) 3. Ahora no podemos importar directamente de manera masiva, por lo que creamos un procedimiento almacenado llamado sp_domicilio que recibe cada cdigo (rengln) y lo inserta en sus tablas correspondientes. CREATE proc [dbo].[sp_domicilio] ( @codigo as varchar(50), @asentamiento as varchar(255),

@tipo as varchar(50), @municipio as varchar(50), @estado as varchar(50) ) as declare @id_estado as int declare @id_municipio as int if not exists(select estadoID from Estado where @estado like '%' + Estado + '%' ) begin insert estado values (@estado) end select @id_estado = EstadoID from Estado where @estado like '%' + Estado + '%' if not exists(select municipioID from municipio where @municipio like '%' + municipio + '%' ) begin insert municipio values (@id_estado, @municipio) end select @id_municipio = municipioID from municipio where @municipio like '%' + municipio + '%' insert colonia (Asentamiento, tipo, MunicipioID, cp) values (@asentamiento, @tipo, @id_municipio, @codigo) go

Para el funcionamiento de este procedimiento almacenado, se requiere que todas las llaves sean entero tipo identidad (autoincremental).

4. Para ejectuar este procedimiento almacenado, escribimos una frumla en excel que genera la lnea de cdigo y la copiamos directamente al editor de texto de SQL Server para ejecutarlas directamente como administradores. = "exec sp_domicilio '"&(A3)&"','"&(B3)&"', '"&(C3)&"', '"&(D3)&"', '"&(E3)&"' " Genera como ejemplo las siguientes sentencias: exec sp_domicilio '44200','Capilla de Jess', 'Barrio', 'Guadalajara', 'Jalisco' exec sp_domicilio '28017','Real Santa Brbara', 'Residencial', 'Colima', 'Colima' Verificar archivo de Excel anexo Colima_.xls

5. Realizar la el ejercicio de particionamiento que se encuentra en el archivo de texto.


Entregable: Documento por equipo que incluya comentarios y conclusiones de las diversas actividades

También podría gustarte