Report inadequate content

Mysql in Harecoded

Copy/clone/duplicate a mysql database script

 TAGS:This is a simple script that duplicates your entire database. There are many ways in which you can take advantage of having an exact replica of your production database.

In short, the behaviour of the script is the following (in this order, all piped):

  1. Delete the COPY database if possible to start with a fresh one
  2. Create the COPY database
  3. Dump the PRODUCTION database
  4. Inject the output of the dump into the COPY database
Read more

Mysql: Llenar tabla con datos aleatorios (de una lista)

En alguna ocasión nos hemos encontrado con la necesidad de actualizar / insertar registors de una tabla con elementos aleatoris a partir de una lista.

Esta operación es especialmente útil cuando queremos crear datos "dummy" para entornos de desarrollo.

El ejemplo de este post es para MySql:

UPDATE files f SET license_type = (SELECT ELT(0.5 + RAND() * 2, 'Free', 'Try' ) )

Volcado Mysql de municipios y provincias españolas y territorios UE

Son muchos los proyectos de Internet que necesitan una base de datos donde se muestra a los usuarios listados de provincias y municipios (caso España) o de regiones, departamentos, länder... (caso Europa).

Esta información no suele estar disponible para su consumo rápido ya que hay que ir a las webs de los organismos oficiales, buscar los CSV (cuando funciona) y crear la base de datos.

Así que hoy me he decidido a agrupar estas organizaciones territoriales cogiendo las fuentes de los organismos oficiales para que cualquier persona pueda descargar un volcado sql de muncipios, provincias y comunidades autónomas de España (formato Mysql) y otro volcado mysql de los países de la Unión Europea con sus regiones, departamentos, länder, estados federados o cualesquiera que sea su organización territorial.

Para ello he creado un repositorio en GitHub donde además de los muncipios y provincias hay más SQL y CSV y así se puede ir actualizando cuando las fuentes hagan actualizaciones.

Mysql con municipios y provincias de España

 -

Los datos han sido tomados de la fuente de datos que provee el INE (Insituto Nacional de Estadística) y se ha creado una estructura mysql para su reciclaje en los proyectos.

Los datos son del 2012.

Puedes descargar la base de datos por tablas aquí:

Mysql con organización territorial de la UE

 TAGS:En el repositorio encontrarás también el sistema de clasificación NUTS que viene a ser lo mismo que en el caso español pero a nivel europeo. Los datos se han sacado de EUROSTAT, herramienta que pone a disposición de los usuarios la Comisión Europea.

Algunos ejemplos de los datos que encontrarás en esta tabla son:

  • Estados federados (länder) y regiones administrativas de Alemania
  • Regiones y departamentos Franceses
  • Regiones y provincias italianas
  • Administraciones y periferias griegas
  • Y así sucesivamente con 81 paises (incluido España).

Puedes descargar NUTS en formato Mysql aquí:

Exportar una consulta de Mysql en un fichero CSV

Si tienes una tabla o consulta que quieres exportar a CSV tienes dos maneras muy fáciles de hacerlo. La primera es dentro de la consola mysql utilizando después del SELECT la opción INTO OUTFILE. Esto escribirá en el fichero externo que indiques el contenido de la consulta. La segunda opción es desde la propia línea de comandos utilizando la opción "Batch".

Diferencias entre método 1 y 2: El primero permite especificar la terminación de las líneas en el csv así como si quieres comillas en cada campo. El segundo escribe en el CSV los campos delimitados por tabulación sin más. La segunda es la opción más senclla y rápida para la mayoría de casos.

Opción 1: Exportar una consulta SQL a CSV desde la consola Mysql

Si por ejemplo quieres que cada campo de tu consulta se separe con punto y coma y cada registro por un salto de línea windows (\r\n) o Unix (\n), lo que vendría a ser un CSV vaya!, solo tienes que hacer algo como:

SELECT
        *
FROM
        tu_tabla
WHERE
        condicion
-- Aqui viene la exportación
INTO OUTFILE
        '/tmp/fichero_salida.csv'
        FIELDS TERMINATED BY ';'
        OPTIONALLY ENCLOSED BY '\"'
        LINES TERMINATED BY '\r\n';

Puedes cambiar el formato fácilmente cambiando los caracteres. En este caso el fichero final estaría en la carpeta /tmp, un lugar fácil para evitar problemas de permisos

Opción 2: Exportar una consulta SQL a CSV desde terminal

Este método es todavía más simple, pero asume que quieres los campos separados por tabulación, cosa que si vas a usar un Excel o similar quizá sea lo más práctico y rápido.

Para ello basta con pasar dos parámetros básicos:

  • -e: Indicando la consulta que quieres hacer entre comillas
  • -B: para indicar que quieres recibir la consulta en modo "batch" (campos separados por tabs)

Supongamos que nos conectamos a mysql, con el contenido de la primera línea...

mysql -u root --password=elquesea mibasededatos \
-e "SELECT * FROM tabla where ...." -B > fichero_salida.csv

... en la segunda tienes la parte que hace la exportación. Ahora tendrás en el fichero_salida.csv el resultado de la consulta delimitado por tabulaciones y si hay cualquier error lo verás por pantalla.

All ISO-639 language codes for MySQL

If you ever needed a mysql table with all the languages detailed in the ISO-639 language codes, here it is. I took the list from the registration authority and created the table in Mysql.

There are 21 languages that have alternative codes for bibliographic or terminology purposes. In those cases I took the bibliographic ones. The script contains the 2 and 3 letter ISO-639 language codes, as well as the English and French names of the languages.

This is a preview:

CREATE TABLE `i18n_language_codes` (
  `3letter` char(3) NOT NULL COMMENT 'ISO 639-2 Code',
  `2letter` varchar(2) default NULL COMMENT 'ISO 639-1 Code',
  `english_name` varchar(255) default NULL,
  `french_name` varchar(255) default NULL,
  PRIMARY KEY  (`3letter`),
  KEY `2letter` (`2letter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO i18n_language_codes (3letter,2letter,english_name,french_name) VALUES
('aar','aa','Afar','afar'),
...

Download Mysql languages dump (structure and data):

download the ISO-639 MySQL script from GitHub

Browsing MySQL databases inside Eclipse without having a local mysql server or client

EclipseSQL is an aid to people programming with databases. Allows to make queries, browse tables, change structures and all the common operations performed in databases. This is how it looks like:

96333-83190.jpg

The application can be downloaded as a standalone (screenshot) although since I am using eclipse to develop PHP (PDT plugin) and Java code, what I find more interesting is the plugin version. By installing the plugin another "View" called SQL is available, where you can browse the databases.

Recently I've been working mainly with MySQL, but since I work with remote sites and I don't have a mysql client neither a mysql server in my development machine, I found a strange error when connecting to the databases:

Error: com.mysql.jdbc.Driver That happens when you don't have the Connector/J 5.0 provided by mysql. To solve this go download the connector, place it under the eclipse's "plugins" folder and go to the SQLEditor preferences dialog. Then just click on Add External class and select the connector file. After clicking OK you'll see the mysql tick enabled.

Just to mention it, I tried to install the plugin from the update site direclty from eclipse but it failed.