Respaldo e Importación de Datos en MySQL

Al mantener una base de datos en uso es importante la creación de un respaldo también llamado backup para una mayor seguridad de datos.

La creación de un respaldo en base de datos es muy efectivo  para:

  • Prevenir perdida de datos en caso de un fallo en el Hardware
  • El borrado de datos por equivocación
  • Un virus en contraído por el equipo
  • Prevenir el mal uso de parte de las personas que manejan la base de datos.

Un respaldo debe de ser constante si se llevan acabo muchos movimientos de datos,  ya que un respaldo muy antiguo o incompleto no conservaría información fidedigna, para la base de datos.

Nota: Un respaldo ubicado en el mismo equipo donde se encuentra la base de datos corre el riesgo de perderse al igual que la base en caso de fallo, es por esto que un respaldo debe estar ubicado en otro equipo o dispositivo de almacenamiento de información.

En esta publicación se encuentra una forma sencilla de crear un respaldo en el manejador MySQL.

Para esta practica se tiene una base de datos llamada Escuela en la que tenemos la siguiente tabla Alumno

create table Alumno(
    idAlumno int NOT NULL auto_increment,
    nombre varchar(100) NOT NULL,
    edad INT NOT NULL,
    estatura FLOAT NOT NULL,
    constraint  pk_Alumno PRIMARY KEY(idAlumno)
);

Importacion de Datos

Ahora importaremos datos de un archivo .txt llamado Alumno.txt

 

Para realizar la importacion escribimos en el manejador la siguiente linea:

LOAD DATA LOCAL INFILE 'ubicacion_de_archivo' INTO TABLE nombre_tabla 
  FIELDS TERMINATED BY ',';

 

para el ejemplo que estamos realizando colocamos la ubicacion de nuestro .txt y el nombre la tabla en donde se insertaran los datos

LOAD DATA LOCAL INFILE
'C:\\Users\\novae_000\\Desktop\\Adm. Bases de Datos\\InstalacionMySQL\\ImportacionMySQL\\Alumno.txt
INTO TABLE Alumno FIELDS TERMINATED BY ',';

podemos verificar que los datos si hayan importado con el query: SELECT * FROM Alumno 

en la realización del ejercicio modificaremos los datos importados con el siguiente query:  UPDATE Alumno SET nombre = ‘nombre modificado’ WHERE  idAlumno=1

 

Respaldo y recuperación

Los siguientes pasos son para la realizar de un respaldo de nuestros datos.

1.-De lado izquierdo de nuestro manejador se muestra una sección llamada Management, y seleccionamos Data Export

2.–Se selecciona la base de datos que respaldaremos en este caso  escuela.

3.- Seleccionamos Export to Self-Contained File para asignarle un nombre y la ubicación de nuestra nueva copia.

Y listo tenemos creado nuestro respaldo de base de datos.

Para verificar que el respaldo se haya creado correctamente, en otro equipo se crea una base de datos, para el ejemplo llamaremos a la base de datos escuela (el mismo nombre que utilizamos para la creación del respaldo).

Para recuperar los datos seguiremos los siguientes pasos

1.-De lado izquierdo de nuestro manejador se muestra una sección llamada Management, y seleccionamos Import Export

2.–Se selecciona la base de datos en donde se realizara la recuperación de datos, en el ejercicio se llama escuela.

3.- Seleccionamos Import From Self-Contained File

4.- Por ultimo seleccionamos la ubicación donde se encuentra nuestro backup (.sql) previamente generado.

Listo ya conoces la manera de importar, crear y recuperar datos de tu base de datos MySql.

 

 

Como crear procedimientos almacenados en Oracle 11g

En este ejercicio mostraremos dos formas de crear procedimientos almacenados en el Manejador de Base de Datos Oracle 11g.

Se le conoce como procedimiento almacenado al conjunto de comandos que se almacenan en la propia base de datos y son ejecutados por el servidor de la base de datos.

Para este ejercicio necesitarás:

PROCEDIMIENTO

Al poner en uso la base de Datos con el Start DataBase podemos comenzar, debemos entrar a la base de datos donde crearemos el procedimiento almacenado.

Hay dos formas de crear un procedimiento almacenado, el primero se lleva acabo de forma gráfica como lo veremos en el método 1 y la segunda por medio de comandos en la consola de la base de datos, lo cual resulta práctico ya que es donde se llamará a ejecución el procedimiento.

Comencemos ahora con los pasos para la primera forma de crear un procedimiento almacenado.

 

MÉTODO 1:

1.-Entramos al SQL Workshop y seleccionamos Object Browser, en este ejemplo ya se tienen creadas las tablas (productos) que se utilizarán para la creación del procedimiento.

2.-Seleccionamos Create,y se mostrarán las opciones en las que también puedes crear tablas, disparadores entre otros elementos, seleccionamos en este caso Procedure.

3.-En este procedimiento haremos que se inserte un producto, para ello nombramos a nuestro procedimiento ProcedimientoAlmacenado1 y presionamos Next.

4.- A continuación agregaremos los parámetros que recibirá y que devolverá el procedimiento, en este ejemplo, agregaremos como parámetros el nombre, precio y cantidad del producto estos tres parámetros serán de entrada por lo cual son de tipo IN como se muestra en la imagen y presionamos Next.

NOTA: se coloca IN si es un parámetro de entrada, OUT si es un parámetro de salida y por ultimo IN OUT si es un parámetro que se utilizará de ambas formas.

5.- El siguiente paso es escribir el contenido de nuestro procedimiento, como la acción que realizara nuestro procedimiento es una inserción escribimos:

INSERT INTO Productos(nombre, precio, cantidad) VALUES(n,p,c);

 Y presionamos Next.

6.-Para terminar con su creación, se muestra el código SQL del procedimiento que estamos por crear, y presionamos Finish. Y listo, esta fué la primer forma de crear un procedimiento, este por medio del asistente de Oracle.

 

Para comenzar con la segunda forma necesitamos ubicarnos en el SQL Workshop y entrar a  SQL Commands. Un procedimiento almacenado en el que el código fuente forma parte de la sentencia CREATE PROCEDURE.

 

MÉTODO 2:

1.- Comenzaremos con la creación del procedimiento almacenado por medio de código fuente, explicando a continuación la sintaxis.

CREATE OR REPLACE PROCEDURE Nombre_Procedimiento
(variables_que_llegan_o_salen_por_parámetro)
IS
BEGIN
    --Contenido, acción que realizara el procedimiento almacenado
END;

 2.- Después de conocer la sintaxis ya podemos crear nuestro procedimiento como se muestra a continuación.

3.-Y  presionamos Run.

EJECUCIÓN PARA AMBOS METODOS:

Por ultimo para poder llamar a un procedimiento almacenado creado de ambas maneras se llama desde SQL Workshop en SQL Commands con la siguiente sintaxis.

DECLARE
    --Aquí se declaran las variables que se lleguen a utilizar
       al recuperar un dato de salida en el procedimiento.
BEGIN
    --Se llama al procedimiento almacenado
    --imprimir 
END;

NOTA: Para la impresion utilizamos dbms_output.put_line() colocando entre paréntesis el texto a imprimir, si deseas imprimir una variable, el modo de concatenar con el texto es el siguiente: dbms_output.put_line(‘producto insertado’ || variable); 

Listo, para terminar el ejercicio solo nos queda ejecutar el procedimiento presionando Run.

Cómo crear disparadores (triggers) en postgreSQL

Antes de crear un disparador, comencemos recordando un poco sobre triggers y su función en una base de datos.

Un disparador, también llamado trigger, es un conjunto de sentencias SQL que dependen de un procedimiento almacenado, estos son almacenados dentro de la base de datos.

Los disparadores se asocian con tablas y se utilizan para ejecutarse automáticamente cuando ocurre un evento determinado en nuestra base de datos. A diferencia de los procedimientos almacenados un trigger no puede ser invocado directamente, sin mencionar que los disparadores son utilizados mayormente para mantener la integridad de los datos no para obtener resultados de consultas.

Los disparadores se ejecutan como resultado de la ejecución de una instrucción esta puede ser INSERT, UPDATE o DELETE.

La estructura básica de un trigger es:

CREATE TRIGGER nombre 
{ BEFORE | AFTER } { INSERT | UPDATE | DELETE } 
 ON tabla [ FOR [ EACH ] { ROW | STATEMENT } ]
 EXECUTE PROCEDURE nombre de funcion ( argumentos )

Descripción de la estructura:

  • Se utiliza el CREATE TRIGGER seguido del nombre del disparador que se esta creando.
  • Se utiliza BEFORE o AFTER
    ( BEFORE si se desea que la instrucción ocurra ANTES y AFTER si se desea que ocurra DESPUÉS de cualquier INSERT, UPDATE ó DELETE ).
  • Se utiliza ON seguido del nombre de la tabla donde se aplicará el disparador.
  • A continuación se presentan dos opciones, si el disparador se aplicara una sola vez, o se aplicará a cada una de las tuplas en la tabla.
    Si se aplicará una sola vez se coloca FOR EACH STATEMENT.
    Si se aplicará a todas las tuplas de la tabla se utiliza FOR EACH ROW.
  • Por ultimo EXECUTE PROCEDURE seguido por el nombre la función que ejecutará.

Debemos tener en cuenta que por cada disparador que definamos en una tabla, la base de datos tendrá que ejecutar la función asociada a dicho disparador por lo tanto es importante que el nombre de la función que se ejecutará sea el mismo que el nombre con el que es llamada.

La estructura básica de una función llamada por un trigger es:

 CREATE OR REPLACE
 FUNCTION nombre de funcion()
 RETURNS TRIGGER AS $nombre de funcion$
 DECLARE  
 BEGIN 
        --funciones que llevara acabo el disparador
 RETURN;
 END
$nombre de funcion$ LANGUAGE plpgsql;

Descripción de la estructura:

  • Se utiliza CREATE OR REPLACE al inicio de la función, si realizaste un cambio puedes volver a ejecutar la función sin tener que eliminarla.
  • Se utiliza FUNCTION seguido del nombre de la función que se esta creando.
  • RETURNS TRIGGER AS seguido del nombre del la función $.
  • A continuación se puede hacer uso de DECLARE utilizado para la declaración de variables que mas adelante se utilizaran en la elaboración de la función.
  • Dentro del BEGIN se colocan las instrucciones que se realizaran, es el núcleo de la función, al terminar regresa un valor con RETURN seguido de un END.
  • Para finalizar se coloca $nombre de la funcion$ seguido de LANGUAGE plpgsql.

Dentro del BEGIN, se puede acceder a elementos de la fila que se  esta insertando, eliminando o actualizando utilizando las referencias NEW.column-name y OLD.column-name, donde column-name es el nombre de la columna de la tabla con la que se asocia el disparador.

-NEW: Variable que contiene la nueva fila de la tabla para las operaciones  INSERT/UPDATE en disparadores del tipo row-level.

-OLD: Variable que contiene la antigua fila de la tabla para las operaciones UPDATE/DELETE en disparadores del tipo row-level.

Ya que conocemos todos los elementos que integran un disparador, a continuación te presento un ejemplo.

Ejemplo: Verifica existencias de producto al hacer la compra

CREATE TRIGGER verificarExistencias
 BEFORE INSERT ON VENTAS.T_DETALLE_VENTAS
 FOR EACH ROW
 EXECUTE PROCEDURE verificarExistencias();
 CREATE OR REPLACE
 FUNCTION verificaExistencias()
 RETURNS TRIGGER AS $verificaExistencias$
 DECLARE  cant int8; id_Socio int8; cant_Detalle int8;
 BEGIN id_Socio = NEW.id_Producto;
       cant_Detalle = NEW.cantidad;
       cant = cantidad_Producto
 FROM VENTAS.T_PRODUCTOS
 WHERE VENTAS.T_PRODUCTOS.id_Producto = id_Socio;
 IF (cant < cant_Detalle) 
    THEN raise notice 'No hay suficiente producto';
    ROLLBACK;
    return null;
 END IF;
 RETURN NEW;
 END
$verificarExistencias$ LANGUAGE plpgsql;

 

Cómo cargar archivos en SQL Server con ASP.NET usando C#

El siguiente ejemplo muestra las líneas necesarias para cargar un archivo en una base de datos, el ejemplo se basará en usar SQL Server, así que los pasos son:

1.- Antes de comenzar con la creación del código es necesario crear la base de datos, creamos una tabla, le llamaré “tblArchivos

2.- Las columnas que contendrá la tabla “tblArchivos” serán:

Imagen

Recuerden que esta tabla solo nos servirá de ejemplo para realizar el cargado de los archivos, así como para conocer que tipo de archivo se está cargando, es probable que para un ejercicio real esta tabla se complemente.

Los siguientes pasos muestran lo necesario en cuanto a controles y lineas de código para hacer la transferencia del archivo al servidor.

3.- Una vez creado el proyecto de tipo Web Aplication, agregar un WebForm.

4.- Dentro de la página añadir un control de tipo “FileUpload” y un control de tipo “Button“, el primero nos servirá para seleccionar el archivo que queremos cargar, el segundo nos servirá para invocar el envío de datos al servidor.

5.- Al control de tipo FileUpload le llamaremos “archivoSeleccionado”, al botón pueden darle el nombre que mejor les parezca.

6.- Invocar el método onClick del botón, ahí colocaremos el siguiente código.

//Con esta condición nos aseguramos de dos cosas, primero que el se haya realizado la carga o la transferencia de un archivo ya que con PostedFile se recupera la información relacionada al archivo (tamaño, tipo, contenido, etc.) y en segundo lugar que el arreglo contenga al menos un archivo cargado.
if ((archivoSeleccionado.PostedFile != null) &&
(archivoSeleccionado.PostedFile.ContentLength > 0))  
{

//Con la clase HttpPostedFile se obtiene acceso de forma individual a los archivos cargados
HttpPostedFile imgFile = archivoSeleccionado.PostedFile;

//Creamos byteFile que contendrá todo el contenido del archivo
Byte[] byteFile = new Byte[archivoSeleccionado.PostedFile.ContentLength];

//Se lee el contenido del archivo en la variable creada byteFile
imgFile.InputStream.Read(byteFile, 0, archivoSeleccionado.PostedFile.ContentLength); 

//Se crea la sentencia SQL que insertará los datos en la tabla de la BD
string sql = “insert into tblArchivos (Image, Tipo) values (@Archivo, @Tipo)”;

//Se crea el recurso de conexión a la BD, la cadena de conexión varia de acuerdo a los parámetros establecidos por su conexión al gestor, usuario, contraseña y método de conexión.
SqlConnection conn = new SqlConnection(“String de conexión al gestor y a la BD.”);

//Se crea el recurso de Command que permitirá ejecutar la instrucción SQL.
SqlCommand cmd = new SqlCommand(sql, conn);

cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(“@Archivo”, System.Data.SqlDbType.Image);
cmd.Parameters.Add(“@Tipo”, System.Data.SqlDbType.VarChar, 50);
cmd.Parameters[“@Archivo”].Value = byteFile;
cmd.Parameters[“@Tipo”].Value = archivoSeleccionado.PostedFile.ContentType;

//se abre la conexión al gestor de BD y se hace la ejecución de la sentencia
conn.Open();

cmd.ExecuteNonQuery();
conn.Close();

}

De esta manera el código anterior permite a partir de una página web seleccionar un archivo y cargarlo en una BD.

El límite de tamaño de un archivo está restringido a 4096 KB es decir 4MB, si queremos permitir la carga de archivos de mayor se debe especificar en el archivo de configuración Web.Config, de igual manera si se quiere restringir a un tamaño menor, en el ejemplo siguiente se permite el tamaño hasta 8MB.

<httpRuntime targetFramework=”4.5″ executionTimeout=”90″ maxRequestLength=”8192″ />

Otros valores para maxRequestLength son: 16384 para 16 Mb, 65536 para 64 Mb, y así sucesivamente.

Saludos