Born to be geek!

jueves, marzo 31, 2005

Cómo importar hojas de cálculo Excel ó CSV en una tabla MySQL

De entre los últimos marrones relacionados con CALIBRE, me ha caído uno relacionado con algunas bases de datos que nos han proporcionado. Todas excepto una nos las dieron en SQL. La excepción era una hoja de cálculo XLS de Micro$oft Excel.

Como necesitamos cruzar la información en estas bases de datos, había que volcar esta hoja de cálculo en una base de datos de MySQL (que es el gestor de bases de datos que solemos usar).

A continuación explico cómo me las he apañado: en primer lugar, usando OpenOffice.org exportamos el fichero XLS a formato CSV (valores separados por comas). Después creamos la base de datos donde vamos a volcar la información:


mysqladmin -u USER -p create DATABASE


Después, creamos una tabla con la misma estructura que el fichero CVS; para ello entramos en mysql


herraiz@arenales:~ $ mysql -u root floss-us-survey
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39 to server version: 4.0.23_Debian-3ubuntu1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


En este caso, la tabla era la siguiente:


mysql> CREATE TABLE `csv_import` (
`id_number` int(11) NOT NULL default '0',
`email` tinytext NOT NULL,
`major_project` tinytext NOT NULL,
`current_project` tinytext NOT NULL,
`first_project` tinytext NOT NULL,
`comments` text NOT NULL
) TYPE=MyISAM;


Una vez hecho esto, y todavía dentro de MySQL, ejecutamos:


load data local infile '~/Desktop/floss-us-survey.csv' into table csv_import fields terminated by ',' (id_number,email,major_project,current_project,
first_project,comments);


Obviamente, tenéis que poner el fichero y el nombre de la tabla igual que las que habéis creado arriba ;-)

Tras esto, podemos volcar la base de datos a SQL, para guardar una copia de seguridad

herraiz@arenales:~ $ mysqldump -u root floss-us-survey > floss-us-survey.sql


Et voilà

Las gracias, a quien se curró esto :-P