Base de Datos
Una base de datos es la organización de datos del mismo contexto, de una forma estructurada. La principal función es obtener, poder añadir y modificar estos datos de una forma sencilla. Podríamos decir que una biblioteca puede considerarse una base de datos, donde podemos encontrar documentos y textos impresos en papel e indexados para su consulta.
Aquí realmente vamos a hablar de bases de datos en formato digital. Veremos varios sistemas de gestión de bases de datos relacionadas (principalmente como lenguaje SQL), sistemas de bases datos relacionadas pero no estructuradas (NO-SQL), o aquellos sistemas de bases de datos Orientados a objetos.
Software que trataremos es Mysql, SQLite, PostgreSQL y otros similares.
Herramientas como PhpMyadmin, MySQL Workbench, Adminer ...
Cuando creamos una base de datos, tener un esquema visual es fundamental para comprender su estructura y funcionamiento.
La mayoría de los gestores de bases de datos proporcionan herramientas para crear esquemas visuales. En phpMyAdmin, una de las herramientas más utilizadas para la gestión de bases de datos MySQL, existe una opción llamada "Designer" que nos permite crear esquemas visuales de nuestras bases de datos y luego exportarlos a formato PDF.
Es importante tener en cuenta que esta herramienta puede no venir incluida por defecto y es posible que necesitemos instalarla por separado, dependiendo de la versión de phpMyAdmin que estemos utilizando.
Una vez que hemos creado nuestro esquema visual en phpMyAdmin, guardarlo como PDF puede parecer un poco complicado. Aunque existe un icono de exportación/importación de PDF, puede que no exporte el archivo directamente a una carpeta. En su lugar, debemos acceder a las opciones del menú de phpMyAdmin.
Dentro de las opciones, encontraremos la opción "Edit or export relational schema". Al seleccionar esta opción, podremos descargar el esquema de nuestra base de datos en formato PDF.
Tener un esquema visual de nuestra base de datos nos ayuda a comprender su estructura de manera clara y visual, lo que facilita su gestión y mantenimiento a largo plazo.
La mayoria de estos comando son ejecutables de phpmyadmin, aunque realmente esto esta estudiado para hacer desde la propia terminal Mysql
Comando SHOW
El comnando SHOW nos proporciona la información de las bases de datos, tablas, columnas o información de estado sobre el servidor de Mysql.
show databases
Nos muestra un listado de todas las bases de datos que tenemos disponibles en ese usuario.
Si estamos en prompt de una base de datos, ya podemos listas las tablas, con :
show tables
Nos muestra todas las tablas de esa base datos.
Comando SELECT
Este comando es el mas utilizado, el que se utiliza para consultar.
Saber el peso de una base de datos
SELECT TABLE_SCHEMA AS `Database`,
ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size (MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA="<database name>";
No indica el peso de la Database ( este nombre debemos cambiarlo por el nuestra base de datos)
Saber el peso de todas las bases de datos
SELECT TABLE_SCHEMA AS `Database`,
ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size (MB)`
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA
ORDER BY SUM(DATA_LENGTH + INDEX_LENGTH) DESC;
No lista todas la base de datos que tengamos con su peso.
¿Queremos contar los distintos valores que tenemos en un campo?
Imagina que tienes un campo con los nombres y quieres saber cuantos nombres diferentes hay.
SELECT count(DISTINCT `NombreCampo`) as variable FROM `NombreTabla`
Imagina que tarifa de precios con los siguiente campos:ReferenciaProducto, ReferenciaFamilia, IdCliente, Precio. Hay que tener en cuenta que las ReferenciasProductos pueden estaŕan duplicada ya que tenemos un precio para cada cliente.
Ahora queremos saber cuantos productos hay en cada familia en esta tabla, no da igual que tengan precios distintos, solo queremos saber el numero de productos en cada familia.
SELECT count(DISTINCT `NombreCampo`) as variable FROM `NombreTabla` where `ReferenciaFamilia`= FAMILIAQUEREMOSSABER
Comando UPDATE
La comando UPDATE es la sentencia para actualizar registros de una tabla. Nos permite elegir los campos a actualizar y los datos. Son registros que ya existen.
Sustituir contenido de un campo por otro.
Lo ideal para hacer esto es con funcion replace que no facilita mysql, si quiere ver todas las funciones que tiene en este link: Funciones de mysql.
UPDATE nombretabla SET campo = REPLACE(campo*, 'palabra', 'palabra_remplazada');
En esta sentencia lo que hace es cambiar en la tabla "nombretabla" en todos lo registros, en el campo busca en valor del campo (campo* -> se pondría el campo) las 'palabras' y las sutituye por 'palabra_remplazada'
Comando INSERT
Tienes la necesidad de copiar los datos de una tabla en otra de otra BD
INSERT INTO `NUEVA-BASEDATOS`.`TABLA-NUEVA` SELECT * FROM `BASEDATOS`.`TABLAQUEREMOSCOPIARDATOSo`
Recordar que la estructura tiene que ser la misma
Aplicación sencilla en visualfox para factura
Muchos clientes nos solicitaban una aplicación sencilla de escritorio, para poder realizar sus facturas.
Sin cosas complejas, simplemente que tuviera la opción de :
- Contactos
- Facturas
- Imprimir
Como no teníamos tiempo para mucho aprovechamos una vieja aplicacion que teníamos realizada hace tiempo en visualfox.
En ella limpiamos todo aquello que teníamos a más, ordenamos un poco el código y listo, ya tenemos nuestra aplicación lista para que los autonomos puedan facturar sin mucha complicación.
Para aquellos que quieran ver como configurar los formularios para que se muestren, correctamente, recordar que la propiedad ShowWindows de los formularios segundarios, debemos ponela en la opción 2
Y ademas debemos poner la propiedad Desktop en .t. ( aunque esta ultima no es necesario... )
Para eliminar que no presente la ventana de visual fox principal, en el programa que abrimos el formulario debemos poner al inicio
HIDE WINDOWS SCREEN
Y al final, al teminar ejecutar, debemos poner
ACTIVATE WINDOW SCREEN
Esto ultimo, es ideal para cuando estamos en proyecto del IDE de visualfox, para poder continuar programando
Si eres autónomo o una pequeña empresa y necesitas una aplicación de escritorio, no dudes en ponerte en contacto con nosotros.
Dbf (Data Base File) es formato simple para almacenar datos estructurados, utilizado por Dbase, Paradox, Clipper, FoxPro y seguro que nos olvidamos de alguno más.
Por esto, puede que os surja la necesidad de convertir esas tablas en una tabla de mysql, por ello en esta entrada vamos a ver las opciones que utilizamos.
DESDE LA PROPIA CONSOLA DE LINUX:
Desde la propia terminal de linux es bastante sencillo, solo necesitamos dbf2mysql.
Utilizando dfb2mysql, instalando en UBUNTU
sudo apt-get install dbf2mysql
Una vez lo tengamos instalado , solo tenemos que crear la BD en mysql, y luego con la siguiente instruccion:
dbf2mysql -h [SERVIDOR] -U [USUARIO] -P [CONTRASEÑA] -d [BASEDATOS] -t [NOMBRETABAL] -c -f /path/del/fichero/nombrefichero.dbf
No es un proceso rápido y por lo que la duración del proceso puede ser largo ya que depende de los registros y lo pesada que sea la tabla, como referencia os indico que:
" Duro un par de horas el importar una tabla 250.000 registros en servidor local "
Con esto, os digo que toca esperar a que termine el comando en la terminal antes de cerrarlo , ya que sino vuestra tabla puede que no este completa.
Problemas encontrados:
- Algunos atributos que tiene dbf no los tiene en cuenta , como el auto incremento
- Algunos tipos de campos con decimales no los importa correctamente.
Referencias:
-Blog de manel perez
-Github un proyecto con modificaciones dbf2mysql
Importar dbf con python
Cuando la cosa se nos pone compleja a la hora importar dbf, lo que hacemos es utilizar Python y una librería llamada dbfread, la cual nos permite leer los dbf , luego con un pequeño script podemos tratar los datos leido y añadirlos a donde queramos.
Referencias:
Documentacion libreria dbfread.