November 23rd, 2009
Güimi
Si queremos pasar datos de una aplicación a otra, el formato más estándar es CSV.
Así por ejemplo para pasar datos de una hoja de cálculo (OpenOffice Calc, Ms-Excell…) a MySQL podemos guardar la tabla como csv y después importarla en MySQL con los siguientes comandos:
# Primero hay que crear la tabla en la BBDD
$ mysql -hSERVIDOR -uUSUARIO -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
mysql> use BASE_DE_DATOS;
Database changed
# Indicar si los datos del fichero CSV están separados por coma, encerrados en comillas dobles o simples...
mysql> load data infile 'FICHERO' into table TABLA fields terminated by ',' enclosed by '"';
Query OK, X rows affected, X warnings (0.02 sec)
Records: X Deleted: X Skipped: X Warnings: X
mysql> quit;
Bye
Quizá interese este artículo indicando como pasar de Ms-Access a MySQL.
CSV, MySQL, importar exportar datos
AbanQ es un ERP publicado como Software Libre que funciona bastante bien para PyMES.
Sin embargo cuando se intenta hacer un movimiento automático de cierra y apertura de ejercicio, a veces da un desagradable mensaje que dice que la contabilidad no cuadra -siendo que está perfectamente cuadrada-.
Esto ocurre porque algunas de las cuentas no tienen un código de balance asociado.
Para averiguar qué cuentas no tienen código de balance asociado basta hacer la siguiente consulta (por ejemplo usando pgAdmin III):
SELECT DISTINCT c.codcuenta, cb.codcuenta, cs.saldo
FROM co_cuentascb cb
RIGHT JOIN co_cuentas c ON cb.codcuenta = c.codcuenta
LEFT JOIN co_subcuentas cs ON c.idcuenta = cs.idcuenta
WHERE cb.codcuenta IS NULL
AND cs.saldo <> 0
Consulta enviada por Alberto García al foro de AbanQ.
Una vez detectadas las cuentas sin código de balance asociado, hay que ir al Área Contable y Financiera (puede tener otro nombre similar) -> Principal. El botón “Códigos de balance 08″ nos abre el formulario con los diferentes códigos de balance. Eligiendo el más adecuado asociamos las cuentas a él.
Por ejemplo se puede ver que el programa asocia inicialmente el código de balance “PG-A-7-a” con el grupo de cuentas “62″, por lo que podremos asociar las cuentas 62x en ese mismo código de balance.
Una vez no queden cuentas sin código de balance asociado, el programa debe hacer correctamente el asiento de cierre y apertura (se recomienda tener ya creado el nuevo ejercicio para poder hacer esta apertura).
abanq, cierre y apertura, códigos de balance
Tengo unos compañeros que se empeñan en utilizar Ms-Access, que es de los pocos programas que no funcionan de manera alguna en GNU/Linux (solo queda el recurso de usar una máquina virtual, como VirtualBox).
Por ello cuando necesito trabajar con ella (o ellos necesitan hacer consultas rápidas y como no saben me lo piden a mi) utilizo un pequeño script para pasar las tablas de Ms-Access a MySQL.
Y dice así:
#!/bin/bash
#
# vuelca_mdb 0.1 - GPL
# (c) Guimi
# http://guimi.net
#
# Ult. mod: Guimi 2009-07
#
# DATOS DEL FICHERO MDB
mdb=xxx.mdb
TABLA1=XXX
TABLA2=YYY
# DATOS DE MYSQL
bbdd=xxx
usuario=xxx
clave=xxx
# FICHERO TEMPORAL
tmp="tmp.$$"
echo "Exportando desde mdb..."
mdb-schema $mdb -S > sql-creacion_mdb$$.sql
mdb-export $mdb $TABLA1 -S -I > sql-datos_mdb$$.sql
mdb-export $mdb $TABLA2 -S -I >> sql-datos_mdb$$.sql
echo "Modificando ficheros exportados..."
# Hay que añadir "IF EXISTS" al "DROP TABLE"
sed 's/DROP TABLE/DROP TABLE IF EXISTS/g' sql-creacion_mdb$$.sql > $tmp
# Hay que cambiar "Long Integer" por "Integer"
sed 's/Long Integer/Integer/g' $tmp > sql-creacion_mdb$$.sql
# Hay que añadir un punto y coma ";" al final de cada linea -que acaba en ")"-
sed -e s/.$/\)\;/g sql-datos_mdb$$.sql > $tmp
mv $tmp sql-datos_mdb$$.sql
echo "Cargando datos en MySQL..."
mysql -D $bbdd -u $usuario --password=$clave < sql-creacion_mdb$$.sql
mysql -D $bbdd -u $usuario --password=$clave < sql-datos_mdb$$.sql
echo "Borrando ficheros temporales..."
rm sql-creacion_mdb$$.sql
rm sql-datos_mdb$$.sql
A continuación otros comandos que pueden ser utiles (proceden del paquete mdbtools).
Mostrar la versión del fichero mdb:
$ mdb-ver xxx.mdb
Mostrar las tablas de un fichero mdb (-1 para mostrar una tabla por fila):
$ mdb-tables -1 xxx.mdb
Generar un fichero C con un Array con los datos de una tabla:
$ mdb-array xxx.mdb TABLA
Access, mdb, mysql, script, prompt, Ms-Access, mdbtools
Instalamos postgres y un cliente gráfico:
# aptitude install postgresql pgadmin3
Configuramos el servidor para que acepte conexiones de red (opcional, recomendable):
# vi /etc/postgresql/7.4/main/postgresql.conf
#tcpip_socket = false
tcpip_socket = true
Para versiones de postgres a partir de la 8.0:
# vi postgresql.conf
listen_addresses='*'
Creamos un nuevo usuario y una nueva BB.DD. para trabajar con él (opcional, recomendable):
# su – postgres
$ id
uid=112(postgres) gid=116(postgres) grupos=115(ssl-cert),116(postgres)
$ psql -l
Listado de base de datos
Nombre | Dueño | Codificación
-----------+----------+--------------
template0 | postgres | UNICODE
template1 | postgres | UNICODE
(2 filas)
Creamos el usuario:
$ createuser
Ingrese el nombre del usuario a agregar: mi_usuario
¿Debe permitírsele al usuario la creación de bases de datos? (s/n) s
¿Debe permitírsele al usuario la creación de otros usuario? (s/n) s
Creamos la BB.DD.:
$ createdb -O mi_usuario mi_bbdd
CREATE DATABASE
Conectamos a la BB.DD. y asignamos una clave al usuario:
$ psql -d mi_bbdd
Bienvenido a psql 7.4.19, el terminal interactivo de PostgreSQL.
Digite: \copyright para ver los términos de distribución
\h para obtener ayuda sobre comandos SQL
\? para obtener ayuda sobre comandos internos
\g o termine con punto y coma (;) para ejecutar consulta
\q para salir
abanq=# alter user mi_usuario with password 'mi_clave';
ALTER USER
abanq=# \q
Postgres en Debian GNU/Linux, Configurar Postgres en Linux, Instalar Postgres en Debian
- Cortar todo acceso al puerto 3306 (porque vamos a funcionar momentaneamente sin claves).
- Parar mysql /etc/init.d/mysql stop
- Lanzar mysql sin proteccion de permisos /usr/sbin/mysqld –skip-grant-tables
- Desde otra sesión, conectar con mysql como root mysql -u root -D mysql
- Modificar la clave de root: update user set password=password(’clave_secreta’) where user=’root’;
- Paramos mysql: /usr/sbin/mysqld stop
Ya está cambiada. Ahora solo hay que volver a dar permisos de acceso y reiniciar el servicio.
Recuperar clave de root en MySQL, root password mysql