Está en la página 1de 5

Ejercicios de Transformacin de Datos

EJERCICIO 1
La empresa de mercadotecnia ACME Marketing, Inc. ha recibido informacin de un cliente De mensajera mundial. Dentro de las tareas que necesita hacer ACME, requiere: 1. Llenar su estructura de datos que consiste en: Nombre Completo bajo la estructura Apellido Paterno Apellido Materno y nombres en un solo campo. Fecha de Nacimiento con el formato MM-DD-YYYY Ciudad Pas Cdigo ISO-3166 del pas.

Solucin: I.- Crear una base de datos a partir del archive de texto equipo 1 utilizando el siguiente comando SQL:
USE ejercicio1 GO DROP table equipo_1 GO CREATE TABLE equipo_1 (Ciudad VARCHAR(40), Estado VARCHAR(140), ApellidoPaterno VARCHAR(40), ApellidoMaterno VARCHAR(40), Nombre VARCHAR(40), FechaDeNacimiento DATE) GO BULK INSERT equipo_1 FROM 'C:\equipo_1.txt' WITH ( FIELDTERMINATOR=',', ROWTERMINATOR='\n' ) GO

III.- Crear la base de datos que contiene un campo nombre de un pais asi como su sigla en ISO3166. Algoritmo:

USE ejercicio1 GO DROP TABLE pais GO CREATE TABLE pais ( Nombre VARCHAR(100), Sigla VARCHAR(40) ) GO BULK INSERT pais FROM 'C:\lista.txt' WITH ( ROWTERMINATOR='\n', FIELDTERMINATOR=';' )

III.- Utilizar las Bases de Datos recien creadas para formar una nueva con la estrucutra que la actividad requiere. Esto lo logramos con la sentencia SELECT INTO. En el caso del la fecha utilizamos la funcion CONVERT para dar el formato MM-DD-YY
USE ejercicio1 GO SELECT ApellidoPaterno + ' ' + ApellidoMaterno + ' ' + equipo_1.Nombre as Nombre, CONVERT(VARCHAR,FechaDeNacimiento,10) as FDN, Ciudad as Ciudad, equipo_1.Pais as Pais, pais.Sigla INTO table1 FROM equipo_1 LEFT JOIN pais ON (equipo_1.Pais = pais.Nombre )

EJERCICIO 2
2. Su socio comercial Parisino La Fayette Galleries requiere que los datos estn en el siguiente formato: Nombre Completo con el formato Nombres/Ap Paterno,ApMaterno en un solo campo Fecha de Nacimiento con el formato DD-MMM-YYYY (MMM = nombre del mes) Ciudad y pais en un solo campo con el formato Ciudad, Pas Este socio comercial requiere que los nombres de los meses estn expresados en Francs, as como los nombres de los pases. Para el nombre oficial en Francs de los pases se debe seguir el estndard de ISO-3166-fr

I.- En esta actividad utilizamos tres bases de datos: La BD que proviene de los datos del archivo de texto. (ejercicio1) La BD de la actividad anterior del cliente ACME ( table1) La BD con los paises escritos en frances asi como su sigla en el estandar ISO-3166-fr

Creacion de la BD paises en Frances


USE ejercicio1 GO DROP TABLE paisfr GO CREATE TABLE paisfr ( Nombre VARCHAR(100), Sigla VARCHAR(40) ) GO BULK INSERT paisfr FROM 'C:\ISO3166_fr.txt' WITH ( ROWTERMINATOR='\n', FIELDTERMINATOR=';' ) GO

II.- Campos de la tabla para el cliente La Fayette Galleries: Nombre/Apellido Paterno, Apellido Materno: Se concatenan datos de la tabla original ( ejercicio_1) de los campos Nombre, Apellido Paterno, Apellido Materno. FechaDeNacimiento: Este dato proviene de la tabla original ( ejercicio_1), ya que el cliente necesita los meses en frances utiliziamos el metodo SET LANGUAGE FRENCH junto con la extraccion del elemento MONTH a traves del metodo DATENAME para obtener el nombre de cada mes en idioma Frances. Ciudad,Pais: Esta columna recibe el nombre de la ciudad de parte de la tabla original (ejercicio_1) ,el algortimo tambien recibe el nombre del pais ya que este dato se relacionara con la tabla que generamos del cliente ACME la cual tiene en su estrucura la Sigla del estandar ISO que nos servira para obterner el nombre del pais proveniente de la tabla paisFr que contiene los datos del archivoISO3166_fr.txt. Algoritmo :
USE ejercicio1

GO SET LANGUAGE French SELECT equipo_1.Nombre + '/' + equipo_1.ApellidoPaterno +',' + equipo_1.ApellidoMaterno AS 'Nombre', DATENAME(DAY,equipo_1.FechaDeNacimiento) + '-' + DATENAME(MONTH, equipo_1.FechaDeNacimiento) +'-' + DATENAME(YEAR, equipo_1.FechaDeNacimiento) AS 'FechaDeNacimiento', equipo_1.Ciudad + ','+ paisfr.Nombre AS 'Ciudad,Pais' INTO table2 FROM equipo_1 LEFT JOIN pais ON (equipo_1.Pais = pais.Nombre ) LEFT JOIN paisfr ON (pais.Sigla = paisfr.Sigla)

Diagrama de relaciones

EJERCICIO 3
3. El socio latinoamericano con base en Mexico solicita para el intercambio de informacin los datos en el siguiente formato: Ap Paterno, Ap Materno, Nombres cada uno en un campo distinto, a excepcin de los nombres, que pueden ir uno o mas. No debe ir espacios adicionales en los campos. Si existe una persona con dos nombres, deben ir separados con un guin. Fecha de nacimiento separada en los siguientes campos:

a) Da (sin ceros a la izquierda) y mes en numero (con cero a la izquierda, ej: 06); b) Ao a cuatro dgitos c) Da de la semana en el que naci en espaol sin abreviar y en sintaxis normal (ej: Jueves) Pas El socio comercial tiene los cdigos de pases basados tambin en ISO-3166, pero el maneja un ndice secuencial numrico, por lo que se debe cambiar el valor del pas por el valor numrico del pas. Ej: Afghanistan = 1, Aland Islands = 2, etc. Cadena digital para sellar separada por pipes en un campo aparte. Solucion: I.- Para obtener el indice del pais creamos una columna con propiedad autoincremental en la tabla pais.
ALTER TABLe pais ADD id_pais INT IDENTITy;

II.- Ejecutamos la consulta con el lenguaje configurado a espaol para recuperar el nombre del dia en el formato deseado. Para obtener los datos de fecha que el ejercicio propone utilizamos la funcion DATENAME en cada uno de los elementos solicitados ( MONTH, DAY, WEEKDAY) El ao se consiguio apartir de la fragmentacion de la fecha de la tabla original(ejercicio_1)

Algoritmo:
Use ejercicio1 go SET LANGUAGE Spanish SELECT ApellidoPaterno as 'Ap Paterno', ApellidoMaterno as 'Ap Materno', REPLACE(RTRIM(equipo_1.nombre),' ','-') as 'Nombre', DATENAME(DAY, FechaDeNacimiento) as 'Dia', SUBSTRING( CAST(FechaDeNacimiento as VARCHAR),6,2) as 'Mes' , DATENAME(YEAR, FechaDeNacimiento)as 'Ao' , DATENAME(WEEKDAY, FechaDeNacimiento) as 'DayName' , pais.id_pais From equipo_1 LEFT JOIN pais ON (equipo_1.pais = pais.nombre)

También podría gustarte