viernes, 15 de junio de 2007

Howto: Exportar de mdb a sqlite en GNU/Linux.

Objetivo: pasar las tablas de una base de datos de Microsoft Access (.mdb) a un archivo sqlite.

Razón: Muchas veces necesitamos hacer búsquedas y no nos sirve usar bases de datos en mysql, un ejemplo puede ser un programa. Puedo querer guardar alguna información, pero puede que la persona que vaya a usar ese programa no tenga mysql instalado o no sepa configurarlo, instalarlo, etc. sqlite nos soluciona el problema, pues es un fichero que puede ser adjuntado con el programa, y nos aporta las ventajas de las bases de datos, aunque en un nivel menos, pues no soporta todas las opciones que nos puede dar mysql. Podríamos guardar los datos en un archivo de texto o binario, pero a la hora de recuperar los datos, sqlite es mucho mejor que un archivo.

Como empezar: Vamos a poner de ejemplo, que queremos pasar la base de datos de todas las cartas de magic, y ya tenemos el mdb. Para trabajar con las bases de datos tenemos el paquete mdbtools, y para trabajar con sqlite el paquete sqlite3, así que pasamos a instalarlos:
sudo apt-get install sqlite3 mdbtools

Una vez que tenemos los paquetes, pasamos a exportar del archivo mdb a sentencias sql, lo haremos en dos pasos, primero el esquema (CREATE …) y luego los datos (INSERT INTO ….) . Para exportar el esquema usaremos el siguiente comando:
mdb-schema master.mdb > esquema.sql

El primer parámetro sera el nombre de la base de datos y el segundo el archivo con las sentencias sql. Si vemos el archivo vemos que uno de los campos se llama P/T y que hay dos campos de tipo Memo/Hyperlink (255), pues bien, sqlite no permite poner “/” en los nombres de los campos, y no existen campos de ese tipo, así que con kate, editaremos el archivo y pondremos de nombre del campo PT y el tipo de datos Text(255).

Ahora pasaremos a por el archivo de los datos, para ello, usaremos el comando:
mdb-export -H -I master.mdb Cards > datos.txt

Con esto exportamos los datos con las sentencias INSERT ya incluidas. Cards es el nombre de la tabla, podemos verlo con mdb-tables master.mdb. Pero tenemos dos problemas que hay que solucionar, el primero es que en los INSERT nos ha puesto el campo P/T, y lo hemos cambiado por PT, y el segundo problema es que las sentencias insert no terminan en “;”. Para arreglar eso echaremos mano de sed.
cat datos.txt | sed -e 's/")/");/g' > datos.temp

Con esto añadimos el ; al final de cada sentencia insert, y para cambiar P/T por PT, basta con:
cat datos.temp | sed -e 's/P\/T/PT/g' > datos.sql

Estupendo, ya tenemos todo lo necesario para crear las tablas en sqlite, el proceso es muy sencillo. ejecutamos estas sentencias:
josu@cyrusnet:$ sqlite
SQLite version 2.8.17
Enter “.help” for instructions
sqlite> .read esquema.sql
DROP TABLE Cards;
SQL error: no such table: Cards
sqlite> .read datos.sql
sqlite> .output insert.sqlite
sqlite> .dump
sqlite>

El nombre del archivo se puede cambiar, pero da lo mismo, porque aun no tenemos la base de datos, pero ya solo queda un último paso, que es:
sqlite cartasMagic.db < insert.sqlite

Una pega que tiene esto, es que el archivo mdb ocupaba 7 megas y el sqlite ocupa 25.

Ya esta, ahora solo queda demostrar que podemos ejecutar consultas sql, por ejemplo vamos a buscar las cartas que se llamen Fireball y sean de quinta edición:
josu@cyrusnet:~/downloads$ sqlite cartasMagic.db "SELECT * FROM Cards WHERE Edition='5E' AND Name ='Fireball'"

Resultado:
Fireball|R|C|5E||0.8300|Sorcery|XR|Mark Tedin|Pay <1> for each target beyond the first: Fireball deals X damage divided evenly, rounded down, among any number of target creatures and/or players.||||5E\Fireball.jpg|1||NF

Para terminar: No es necesario ejecutar las consultas desde bash, hay módulos de sqlite para C++, php, python, etc. Existe el programa kexi que en principio nos hace todo esto mucho más rápido, pero lo he instalado y no me ha funcionado, se cerraba solo por algún bug, así que la forma que hemos visto aquí sirve siempre.

martes, 6 de marzo de 2007

Buscando gangas en Ebay

Ya comente anteriormente que es posible encontrar algunos productos por un precio muy suculento en este portal de subastas, y hoy vamos a dar unas pautas para intentar encontrarlos.

Una de las mayores ventajas que tiene ebay es que puedes buscar un producto en un montón de tiendas distintas a la vez, mientras que si yo fuera a comprarlas por tiendas tradicionales, perdería varios días viendo modelos, y posiblemente sin tener éxito. Mientras que en ebay, puedes buscar incluso fuera de nuestras fronteras, y cruzar el charco para ver que nos ofrecen nuestros amigos yanquis (Ojo a la aduana en estos casos que nos puede dar una sorpresa).

Lo primero que hay que saber es que hay dos tipos de artículos en ebay, las subastas, y los artículos a precio fijo (Cómpralo ya, llamados en ebay). Está bien buscar primero solo los artículos a precio fijo y ordenarlos por precio, para ver cual es el más barato. Esto esta bien si tenemos prisa o nos gusta mucho algún articulo y a buen precio, pero donde están las gangas es en las subastas. A veces el mismo producto esta a la venta en los dos formatos, precio fijo y subasta, y casi siempre es mejor entrar en la subasta, y desechar el otro modo de compra (he visto varias veces también, en las pujas superar el precio fijo, nunca he entendido esto, la gente no busca con ahínco como yo).

Después de ver algunos artículos, vamos a empezar a buscar en serio. Vamos a suponer que quiero unas gafas de sol, que seguramente ahora como no es temporada las podremos conseguir a mejor precio, pues habrá menos pujadores. Si el articulo que queremos comprar no supera los 45 (gastos de envió incluidos), no pasa por la aduana, con lo que haremos una búsqueda en todo el mundo, sino habría que sopesar riegos, yo suelo preferir mirar primero en Europa (los países de la UE no pagan aranceles…), que casi siempre se encuentra lo que se busca.

Hay que tener muy en cuenta que no todo el mundo habla castellano, y en ebay el alemán y el ingles son muy importantes, así que si sabemos como se dice “gafas de sol”, conseguiremos muchos más productos. En principio con sun glasses nos valdría.

Ya tenemos algunas búsquedas hechas, así que hay que empezar a descartar: Si no es una subasta nacional, yo filtraría las que no dejen pagar por paypal, pues las transferencias internacionales tienen unas altas comisiones que tendremos que pagar. Si es una subasta nacional, las mejores son las que terminan a horas “raras”, de 14:00 a 15:00, después de la 1:00 son horas en las que la gente no suele estar delante de la pantalla, así que nos quitaremos a algunos enemigos. Si el articulo esta repetido, cosa muy habitual, miraremos las horas, pero seguiremos todos ellos, para ver como evolucionan.

Una de las opciones más interesantes que tiene ebay, es ver como terminaron pujas anteriores, de tal forma que podemos ver a precio se vendió un artículo, para hacernos una idea de su valor.

Por supuesto miraremos con lupa los usuarios chinos y asiáticos en general, que no suelen tener buena fama.

Siempre es mejor esperar al final de la puja para no dar pistas a los demás. Nunca he entendido porque la gente puja antes, si lo único que hace es subir el precio. El único caso en el que esto es lógico es si no vas a estar al final de la subasta, y dar tu puja máxima por adelantado, pero esto es mostrar tus cartas.

Hay que mirar cuantas personas han pujado, no cuantas pujas hay, aunque esto también es importante, pues si alguien ha pujado 15 veces, es que le interesa mucho y pagara mucho por él.

Con esto ya podemos empezar a buscar, y con un poco de paciencia y de tiempo se sacan buenos precios, pues hay muchos usuarios que, o no saben buscar, o no tienen tiempo y pagan más de lo que deberían. A pesar de que sea cuestión de tiempo, más tiempo perderías buscando las gafas por la gran vía, y verías muchos menos modelos de gafas.

Nunca podemos olvidar que el tiempo que hubiéramos perdido dando vueltas por la calle y sobretodo el echo de comprar desde casa con la comodidad que eso conlleva vale mucho.

Suerte en las subastas.

martes, 19 de diciembre de 2006

Ebay, buscando gangas en un mercado perfecto

Me he adentrado en el mundo de ebay hace poco, y a pesar de saber que nadie regala nada, ebay es un mercado perfecto donde hay muchos oferentes y muchos demandantes, lo que hace que se puedan conseguir productos a precios asequibles, pero además, y lo curioso en este caso es que se pueden encontrar algunas gangas, por el sistema en que se basa ebay.

Ebay cobra por los anuncios publicados, pero no cobra por todos por igual, lo que hace que se creen estos chollos, pues el precio de una publicación depende del precio de salida del articulo, por ejemplo, un artículo con precio de salida 1 euro cuesta 5 céntimos de euro, mientras que uno de 10 euros, cuesta 40 céntimos de euro. Cuando solo tienes un artículo, este precio puede ser insignificante, pero para una tienda que publica cientos de artículos a la semana, reducir estos costes es muy apetecible.

Hay que explicar que esto en principio no es ningún problema, pues si yo pongo a la venta un articulo por 1 euro, pero es un artículo muy demandado, por ejemplo, una PSP, enseguida saldrán pujadores que harán subir el precio y lo pondrán a su precio de venta legítimo, con lo que el vendedor ha ahorrado un buen dinero, y el comprador no ha notado diferencia alguna.

Ahora, pongamos otro ejemplo, el artículo es un par de zapatillas que han salido a 1 euro. Pero esta vez para el numero 46 solo ha habido un pujador (el mercado a dejado de ser perfecto, y esto produce una ganga), que ha pujado por 1 euro, en este caso la puja finaliza y el comprador obtiene unas zapatillas por 1 euro mas gastos de envío. Un verdadero chollo, desde luego. Alguno podría pensar que si el precio no satisface al vendedor, no lo vende y punto. No es tan sencillo, y es otra de las ventajas de ebay frente al comercio tradicional.

Un vendedor tiene la oportunidad de poner un precio mínimo de venta secreto, que en caso de no superarse, el articulo no se vende a nadie, pero esto tiene un precio extra en la publicación del mismo (5% de ese precio), y como hemos dicho antes, no es normal que esto se de. Seguimos con lo mismo de antes, vale, has conseguido el producto, y ¿si el vendedor no quiere vender?, pues aquí entramos en la que es la mejor característica de ebay, los comentarios.

Los votos son algo importantísimo, que hace que un vendedor sea de fiar, o no, y por lo tanto que reciba pedidos o no, si ese vendedor no vende ese producto, recibirá un voto negativo, y el siguiente comprador se lo pensara dos veces antes de pagarle nada, y si esto se repite, el vendedor no venderá nada más, por lo que para él, es mejor perder dinero en esa venta, pero mantener su “buena reputación”.

Es muy frecuente recibir productos extra para compensar una tardanza o cualquier problema, cualquier cosa para no recibir votos negativos, que la comunidad vera como “desconfianza”.

Viendo esto, parece que no es tan inseguro como la gente cree, solo hay que saber a quien comprar, pues comprar un portátil a un chino que tiene 0 votos (newer), es algo arriesgado, pero comprar unas gafas a un vendedor con 1218 votos positivos, es desde luego, poco arriesgado, y si es por 1 euro, es además una ganga.

En resumen, las gangas están ahí, pero, ¿como encontrarlas?, dejemos esto para otro día.