SELECT DATE_FORMAT(fecha, '%T'), date(fecha) FROM tabla;
select * from tabla where DATE_FORMAT(fecha, '%T') <> '00:00:00'
update tabla set fecha = date(fecha);
SELECT DATE_FORMAT(fecha, '%T'), date(fecha) FROM tabla;
select * from tabla where DATE_FORMAT(fecha, '%T') <> '00:00:00'
update tabla set fecha = date(fecha);
CREATE TABLE dbo.status_tabla
(
id int NOT NULL,
status_tabla nvarchar(50) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.status_tabla ADD CONSTRAINT
PK_status_tabla PRIMARY KEY CLUSTERED
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX IX_status_tabla ON dbo.status_tabla
(
status_tabla
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE TABLE dbo.presupuesto
(
id int NOT NULL,
idorden int NOT NULL,
fecha smalldatetime NOT NULL,
idusuario_captura int NOT NULL,
fechautoriza smalldatetime NULL,
idusuario_autoriza int NOT NULL,
importotal money NOT NULL,
idstatus_presupuesto int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
DF_presupuesto_fecha DEFAULT GETDATE() FOR fecha
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
DF_presupuesto_importotal DEFAULT 0 FOR importotal
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
DF_presupuesto_idstatus_presupuesto DEFAULT 0 FOR idstatus_presupuesto
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
PK_presupuesto PRIMARY KEY CLUSTERED
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
fk_presupuesto_orden FOREIGN KEY
(
idorden
) REFERENCES dbo.orden
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
fk_presupuesto_usuario_captura FOREIGN KEY
(
idusuario_captura
) REFERENCES dbo.usuario
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
fk_presupuesto_usuario_autoriza FOREIGN KEY
(
idusuario_autoriza
) REFERENCES dbo.usuario
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuesto ADD CONSTRAINT
fk_presupuesto_status_presupuesto FOREIGN KEY
(
idstatus_presupuesto
) REFERENCES dbo.status_presupuesto
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuesto SET (LOCK_ESCALATION = TABLE)
GO
CREATE TABLE dbo.presupuestodet
(
id int NOT NULL,
numpar int NOT NULL,
idpresupuesto int NOT NULL,
cant float NOT NULL,
idproduc int NOT NULL,
idreparaclasif int NOT NULL,
idrepara int NOT NULL,
fechvigencia smalldatetime,
precio float NOT NULL,
impor float NOT NULL,
) ON [PRIMARY]
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
PK_status_presupuesto PRIMARY KEY CLUSTERED
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_cant DEFAULT 0 FOR cant
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_idproduc DEFAULT 0 FOR idproduc
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_idreparaclasif DEFAULT 0 FOR idreparaclasif
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_idrepara DEFAULT 0 FOR idrepara
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_fechvigencia DEFAULT GETDATE() FOR fechvigencia
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_precio DEFAULT 0 FOR precio
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
DF_presupuestodet_impor DEFAULT 0 FOR impor
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
fk_presupuestodet_presupuesto FOREIGN KEY
(
idpresupuesto
) REFERENCES dbo.presupuesto
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
fk_presupuestodet_produc FOREIGN KEY
(
idproduc
) REFERENCES dbo.produc
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
fk_presupuestodet_reparaclasif FOREIGN KEY
(
idreparaclasif
) REFERENCES dbo.reparaclasif
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.presupuestodet ADD CONSTRAINT
fk_presupuestodet_repara FOREIGN KEY
(
idrepara
) REFERENCES dbo.repara
(
id
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
create database database;
GRANT ALL PRIVILEGES ON database.* TO 'usuario'@'servidor' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES ;
mysql --user=usuario --password database < database.sql
mysqldump --opt --password=password --user=usuario database > database.sql
REVOKE GRANT OPTION ON database.* FROM 'usuario '@'localhost';
Instrucciones para truncar el registro de transacciones de SQL Server 2008; solo es necesario cambiar BASEDEDATOS por el nombre real de la base de datos.
CHECKPOINT
GO
BACKUP LOG SAEM TO DISK='NUL:'
GO
DBCC SHRINKDATABASE (SAEM , 10)
GO
Para permitir el acceso a SQL Server mediante la intranet realizar lo siguiente:
Entrar al grupo de programas Microsoft SQL Server 2008 R2 -> Herramientas de configuración -> Administrador de configuración de SQL Server y en la seccion de Configuracion de red de la instancia de SQL Server Habilitar el protocolo TCP/IP
Posteriormente proceder con las siguientes indicaciones para la configuración del Firewall de Windows
Open the Control Panel
You may need to also add the Sql Browser service so that any named instances can be found.
SELECT email
FROM usuarios_registrados
WHERE boletin = 1
AND email
NOT REGEXP '^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}$';
To stop the default instance of SQL Server
net stop "SQL Server (MSSQLSERVER)"
-or-
net stop MSSQLSERVER
Note: |
---|
Stopping an instance of SQL Server with the net stop command causes SQL Server to perform a checkpoint in all databases, saving all changed data to disk. |
Instrucciones para truncar el registro de transacciones de SQL Server 2005; solo es necesario cambiar BASEDEDATOS por el nombre real de la base de datos.
CHECKPOINT
GO
CHECKPOINT
GO
BACKUP LOG BASEDEDATOS WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE (BASEDEDATOS , 10)
GO
Manejo de datos BLOB con PHP y MySQL
Autor: MySQL Hispano
1 . Creando la base de datos
2 . Agregando archivos a la base de datos
3 . Listando los archivos de la base de datos
4 . Descargando archivos de la base de datos
5 . Comentarios finales
Cedido por MySQL Hispano.
Sin duda alguna, una de las preguntas más frecuentes en relación a MySQL es, "¿Cómo puedo almacenar archivos en una base de datos?". La respuesta es, se tienen que usar los tipos de datos BLOB. Estos BLOBs (Binary Large Objects) pueden almacenar prácticamente cualquier tipo de datos, incluyendo documentos de MS Word, imagenes gif/jpeg, archivos PDF, MP3s, etc.
En este artículo vamos a mostrar como crear un repositorio de archivos binarios usando PHP y MySQL para poder almacenar diferentes tipos de archivos. Veremos como almacenar cada uno de los archivos en una base de datos, para posteriormente recuperarlos.
Para probar los ejemplos en este artículo, es necesario tener acceso a un servidor con soporte para PHP, además de contar con un servidor MySQL. Se asume que se cuentan con los privilegios apropiados para crear la base de datos, y que MySQL está corriendo en el mismo servidor que PHP.
Nuestro repositorio de documentos usará una base de datos que contenga únicamente una tabla para almacenar dichos documentos.
[eduardo@casita]$ mysqladmin create repositorio [eduardo@casita]$ [eduardo@casita]$ mysql repositorio Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 139 to server version: 3.23.41 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> CREATE TABLE archivos( -> id int not null auto_increment primary key, -> nombre varchar(50), -> titulo varchar(50), -> contenido mediumblob, -> tipo varchar(50)); Query OK, 0 rows affected (0.01 sec) mysql> grant all on repositorio.* to bingo@localhost identified by 'holahola' Query OK, 0 rows affected (0.46 sec)
Ahora tenemos una base de datos llamada repositorio, la cual contiene una tabla llamada archivos.
Los detalles de cada campo en la tabla archivos se muestra a continuación:
Ahora que tenemos lista la base de datos que servirá como repositorio de nuestros archivos, vamos a crear un simple página web que permita seleccionar un archivo desde el navegador para posteriormente enviarlo a un script en PHP que se va a encargar de almacenarlo en nuestra base de datos. La página web será nombrada escoger_archivo.html y el script en PHP se llamará guardar_archivo.php.
La página web puede contener todo el código HTML que se desee, pero es necesario que se incluya el siguiente formulario para que se tenga la opción de escoger un archivo y enviarlo al servidor.
<form enctype="multipart/form-data" action="guardar_archivo.php" method="post"> Descripción <input type="text" name="titulo" size="30"> Ubicación <input type="file" name="archivito"> <input type="submit" value="Enviar archivo"> </form>
Del código que hemos escrito tenemos que subrayar lo siguiente:
Estos son los tres requerimientos básicos que debe cumplir la página HTML que servirá para subir los archivos al servidor. Antes de escribir el código del script guarda_archivo.php, vamos a comentar algo acerca de la forma en como se tomaran los datos del archivo que se va a recibir.
Desde la versión 4.1 de PHP se recomienda se utilice el arreglo $_FILES para leer los datos del archivo que se está subiendo al servidor. A continuación se listan los elementos que contiene este arreglo. Nótese que el nombre de los índices del arreglo depende de como se haya nombrado el campo del tipo file en el formulario.
Por ejemplo, estos son los posibles valores para un archivo j-odbc.zip que se ha subido al servidor:
$_FILES["archivito"][name] => j-jdbc.zip $_FILES["archivito"][type] => application/zip $_FILES["archivito"][tmp_name] => /tmp/phpvXQpqP $_FILES["archivito"][size] => 337945
Cabe mencionar que se tienen que revisar, y en su caso modificar las siguientes variables del archivo de configuración de PHP para que se puedan subir los archivos al servidor, y puedan ser correctamente manejados por un script de PHP.
Ahora es el momento de mostrar el código del script en PHP que va a guardar el archivo en nuestra base de datos.
/* guardar_archivo.php */ require("dbconnect.inc.php"); $archivo = $_FILES["archivito"]["tmp_name"]; $tamanio = $_FILES["archivito"]["size"]; $tipo = $_FILES["archivito"]["type"]; $nombre = $_FILES["archivito"]["name"]; $titulo = $_POST["titulo"]; if ( $archivo != "none" ) { $fp = fopen($archivo, "rb"); $contenido = fread($fp, $tamanio); $contenido = addslashes($contenido); fclose($fp); $qry = "INSERT INTO archivos VALUES (0,'$nombre','$titulo','$contenido','$tipo')"; mysql_query($qry); if(mysql_affected_rows($conn) > 0) print "Se ha guardado el archivo en la base de datos."; else print "NO se ha podido guardar el archivo en la base de datos."; } else print "No se ha podido subir el archivo al servidor";
El archivo dbconnect.inc.php contiene únicamente las instrucciones para conectarse a MySQL y seleccionar la base de datos que se va a utilizar. El código de este programita se muestra a continuación.
/* dbconnect.inc.php */ $conn = mysql_connect("localhost","bingo","holahola"); mysql_select_db("repositorio");
Ya que hemos guardado algunos archivos en nuestro repositorio, ahora podemos listar la información de éstos, para posteriormente descargarlos. Esta es la labor del script que se muestra a continuación.
/* listar_archivos.php */ require("dbconnect.inc.php"); $qry = "SELECT id, nombre, titulo, tipo FROM archivos"; $res = mysql_query($qry); while($fila = mysql_fetch_array($res)) { print "$fila[titulo] <br> $fila[nombre] ($fila[tipo]) <br> <a href='descargar_archivo.php?id=$fila[id]'>Descargar</a> <br> <br>"; }
Como se puede observar en el código del listado anterior, se ha puesto una liga a un archivo descargar_archivo.php. La funcionalidad de este programita será la de leer los datos de los archivos que se encuentran en la base de datos y mandarlos al navegador. Dependiendo del tipo de archivo del cuál se trate, el navegador podrá mostrar por él mismo el contenido del archivo.
/* Script descargar_archivo.php */ require("dbconnect.inc.php"); $qry = "SELECT tipo, contenido FROM archivos WHERE id=$id"; $res = mysql_query($qry); $tipo = mysql_result($res, 0, "tipo"); $contenido = mysql_result($res, 0, "contenido"); header("Content-type: $tipo"); print $contenido;
Como se puede observar, el código PHP de los programitas es demasiado simple, y no tienen ningún grado de dificultad. El código se ha hecho a propósito lo más simple posible, sin embargo puede adecuarse o tomarse como base para realizar una aplicación real más completa.