Fragmentación de XML mediante OPENXML

Fragmentar XML es el proceso de transformar datos en formato XML a filas.
El proceso de fragmentación se realiza mediante los siguientes pasos:
  • Obtención de el documento XML.
  • Generación de una representación interna de arbol, mendiante el procedimiento almacenado sp_xml_preparedocument.
  • Recuperar un conjunto de filas del arbol mediante una sentencia XPath.
  • Procesar los datos del conjunto de filas temporal generados por OPENXML para insertar, seleccionar, eliminar o modificar filas en una tabla permanente.
  • Destruir el arbol interno cuando ya no es necesario con el procedimiento almacenado sp_xml_removedocument

Sintaxis: MSDN

Ejemplo:


DECLARE @dxml varchar(1000);
DECLARE @idoc integer;
SET @dxml = '
';
EXEC sp_xml_preparedocument @idoc OUTPUT, @dxml;
SELECT * FROM OPENXML(@idoc, '//CLIENTES/CLIENTE') WITH (id INT, numero VARCHAR(50), nombre VARCHAR(50), direccion VARCHAR(50), telefono VARCHAR(50))
EXEC sp_xml_removedocument @idoc;
GO

Recuperacion de XML mediante FOR XML

Se puede usar la clausula FOR XML en las sentencias SELECT de Transact-SQL para recuperar los datos en formato XML en lugar de filas y columnas.

Sintaxis: MSDN

Ejemplos:

SELECT * FROM CLIENTES FOR XML RAW
GO
SELECT * FROM CLIENTES FOR XML AUTO
GO
SELECT 1 AS TAG,
NULL AS PARENT,
ID AS [CLIENTE!1!ID],
NUMERO AS [CLIENTE!1!NUMERO],
NOMBRE AS [CLIENTE!1!NOMBRE!ELEMENT],
DIRECCION AS [CLIENTE!1!DIRECCION!ELEMENT],
TELEFONO AS [CLIENTE!1!TELEFONO!ELEMENT]
FROM CLIENTES FOR XML EXPLICIT
GO
SELECT
ID "@ID",
NUMERO "@NUMERO",
NOMBRE "NOMBRE",
DIRECCION "DIRECCION",
TELEFONO "TELEFONO"
FROM CLIENTES FOR XML PATH('CLIENTE')
GO

Creación de tablas con particiones

Para crear una tabla con particiones tendremos que crear una función de partición y un esquema de partición.

Para crear una función de partición usaremos la instrucción CREATE PARTITION FUNCTION:

Sintaxis: MSDN

Ejemplo:

CREATE PARTITION FUNCTION pf_FechaNacimiento (datetime)
AS RANGE RIGHT
FOR VALUES('01/01/2000', '01/01/2005', '01/01/2010', '01/01/2015', '01/01/2020')
GO

El siguente paso sería crear un esquema de partición con CREATE PARTITION SCHEME

Sintaxis: MSDN

Ejemplo:

CREATE PARTITION SCHEME ps_FechaNamimiento
AS PARTITION pf_FechaNacimiento
TO (fg1, fg2, fg3, fg4, fg5, fg6, fg7)

Con esto habremos creado una funcion de particion con 6 rangos y un esquema de particiones con 7 grupos de ficheros, el séptimo sería el grupo de archivos SIGUIENTE que se utilizaría en el caso de crear una partición mas a la función de partición.

Creación de tablas

Al crear una tabla de base de datos hay que indicar el nombre de la tabla, los nombre de las columnas, sus tipos de datos, la capacidad de aceptar o no valores null, la intercalación de los datos, etc.

La intercalación es el criterio de ordenación de los datos en el campo. Si no se especifica intercalación se utilizará la intercalación definida por defecto en la BD.

Existen tipos de columnas especiales:

  • COLUMNAS CALCULADAS: Es una columna virtual, que no se almacena en BD. SQL Server utiliza una formula creada para calcularla.
  • COLUMNAS DE IDENTIDAD: Se crean con la propiedad identity. Contiene un valor secuencial generado automaticamente por Sql Server. Usarlas como claves primarias puede mejorar el rendimiento y los costes de mantenimiento de la BD.
  • COLUMNAS TIMESTAMP: Las columnas timestamp tienen una marca de tiempo generado automáticamente.
  • COLUMNAS UNIQUEIDENTIFIER: se definen como uniqueidentifier. Se almacenan GUID que son udentigicadores unicos globales. Se puede generar un GUID con la función NEWID de T-SQL.

Sintaxis: MSDN

Ejemplo:


CREATE TABLE dbo.CONTACTO(
id_contacto int IDENTITY NOT NULL,
Nombre varchar(50) NOT NULL,
Apellidos varchar(100) NULL,
Telefono varchar(12) NULL,
Email varchar(50) NULL,
Web varchar(256) NULL,
timestamp )
GO

Tipos de datos de Alias

Son tipos de datos personalizados que nos permiten guardar coherencia de los datos cuando utilizamos los mismos elementos en tablas distintas de la base de datos.

Sintaxis: MSDN
Ejemplo:
CREATE TYPE dbo.Nombre FROM varchar(50) NOT NULL

Hay que tener en cuenta de que no existe la instruccion ALTER TYPE por los que para cambiar un tipo habra que usar la instruccion DROP TYPE y previamente habra que quitarla de todas las tablas.

Instantaneas de bases de datos

Una instantanea de una base de datos es una vista estática de solo lectura de una base de datos

Sintaxis: MSDN
Ejemplo:
CREATE DATABASE JABASS ON
( NAME = JABASS,
FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\JABA.ss')
AS SNAPSHOT OF JABA;
GO

Creacion de esquemas de bases de datos

Los esquemas nos sirven para organizar las bases de datos tal y como los namespaces nos permiten organizar nuestras bibliotecas de clases cuando programamos.

Sintaxis: MSDN
Ejemplo:

USE DATOS
GO
CREATE SCHEMA [Marketing]
GO

Buscar este blog

Seguidores

Blogs amigos