Por motivo del Foro Nacional de Software Libre llevado a cabo en Coatzacoalcos Veracruz al que tuve la fortuna de asistir a principios del mes de Junio para dar una plática en el Centro de Convenciones sobre Programación de Aplicaciones Móviles con SQLite, tuve que hacer unos ajustes a el script de PHP para convertir archivos de CSV y generar una base de datos de SQLITE por lo que he liberado la versión 0.02 de este script haciéndolo más fácil de usar para algún programador que requiera exportar archivos CSV y generar una base de datos de SQLite.
El Script de PHP puede descargarse desde el siguiente URL https://sourceforge.net/projects/csv2sqlite/
Por cierto el material de mi ponencia puede ser descargado desde la siguiente URL http://phylevn.mexrom.net/data/files/files/SQLiteFonasol.pdf
Espero les sirva y cualquier comentario será bienvenido.
Nota Importante:
Este es un procedimiento para instalar Linux a modo de pruebas para y UNICAMENTE Palm LifeDrive, Este método puede eliminar la garantía de tú equipo, así que úsalo bajo tú propio riesgo.
Archivos Requeridos: Liga de Descarga
boot configuration http://git.hackndev.com/releases/20061002-insomnia/linux.boot.cfg
Procedimiento:
1.- Cocoboot
Cocoboot es un Programa PRC para PalmOS que carga el Kernel de Linux en la Memoria del equipo, este programa inicia el proceso de carga de Linux. Instálalo en la memoria de tu Palm Life Drive.
2.- zImage: Linux zImage
El archivo zImage contiene el Kernel de Linux y un pequeño entorno de booteo llamado initramfs que se monta el disco duro de tú equipo y carga el resto del sistema operativo. Necesitaras descargarlo y copiarlo al directorio raiz del disco duro de la Palm Lifedrive
3.- rootfs:Familiar Distribution
Es el sistema de archivos por default que contiene un conjunto de programas para usar linux, actualmente existen diversos entornos de escritorio de Familiar, necesitaras descargar uno y descomprimirlo (puedes usar 7-zip para descomrpimirlo http://www.7-zip.org/ ), en este caso usaremos OPIE. El archivo descomprimido copiarlo al directorio raiz del disco duro de la Palm Drive.
4.- swap file
Espacio SWAP, en algunos Sistemas como windows se conoce como memoria virtual, es un área de datos para almacenamiento temporal que corré algo similar a la memoria RAM. Es opcional, pero mejora la velocidad del equipo, especialmente cuándo se ejecuta un entorno gráfico en la Palm Life Drive como será en este caso.
Descárgalo, descomprímelo en tu pc, y copialo al disco duro en la palm lifedrive.
5.- Boot Configuration
initramfs necesita saber que rootfs cargar, así también define si se usará un archivo SWAP. USa el default y obtenlo de la siguiente URL[http://git.hackndev.com/releases/20061002-insomnia/linux.boot.cfg]. Colócalo en el directorio raiz del disco duro de la Palm Life Drive
6.- Notas muy Importantes.
Ten algunas precauciones antes de querer correr linux.
No presiones el botón reset mientras la PDA esté en suspensión, activa el dispositivo ya sea presionando un botón o tocando el touch screen, entonces puedes reinicar la PDA.
Para regresar de Linux a PalmOS, solo reinicia tú PDA.
La versión de Linux para Palm LifeDrive actualmente no tiene un diver que muestre el status de la batería, si estás cargando tú PDA y sientes un sobrecalentamiento, desconéctalo!.
Este procedimiento unicamentes es para PALM LIFEDRIVE, no intentes realizarlo en algun otro modelo o versión de sistema operativo, ya que podrías ocasionar que tú equipo quede inservible y tengas un nuevo pisapapeles muy bonito y original, pero muy caro.
Finalmente, No soy responsable si seguir este procedimiento causa algún daño a tu PDA.
Seguir este procedimiento puede causar que se pierda la garantía de tú equipo.
úsalo bajo tú propio riesgo. !!
7.- Iniciando Linux
Si la descarga de los archivos fueron correctos y la instalación de los archivos en el disco duro fueron realizados tal como menciono en líneas anteriores, entonces estas listo para correr Linux.
Ejecuta el programa cocoboot en tú Palm LifeDrive.
La pantalla de la PDA mostrará un mensaje diciendo /initrd.fz not found, esto es normal, el initrd esta construído dentro de el archivo zImage por eso no encuentra la inicialización y envia ese mensaje.
Si todo va bien en unos pocos minutos podrás ver corriendo el Entorno Gráfico de OPIE y pedirá que calibres la pantalla. Haz la calibración y empieza a jugar con Linux en tú Palm Life Drive.
8.- EN CASO DE ALGUN ERROR.
EN caso de que el dispositivo se reinicie mostrando un error como "FATAL EXCEPTION" cierra algún programa que este en ejecución en tú Palm, puede ser que algún programa este en modo background (Ejemplo PXAClocker)
Desconecta el cable USB de tú PDA.
Remueve la tarjeta SD/MMC.
Intenta Reiniciar en frío, no olvides respaldar todo antes de hacer el reinicio.
Si tienes alguna duda sobre la instalación puedes obtener más información en el siguiente foro http://hackndev.com/forum
Every day I was programming a module to get of a FTP File Server a Gzip Compressed File of a sqlite database file that have 10Mb size and compressed have 2.5Mb size.
For make it this I did the following: Operating System: Server: Ubuntu Linux Server Client: Windows Mobile 2005 Hardware: MC70 Symbol Technologies Terminal HP iPaq RX3715 Network Connections: MC70:GPRS-Telcel iPaq RX3715: WiFi 802.11b FTP Server: PureFTPd Programming language: C# Library to uncompress: ZlibCE Linux Application to compress: gzip Problem:
My problem was than I had to get a SQLite Database File (near of one hundred thousands records in thirtyfive tables) of a FTP File Server by mean GPRS to one hand held MC70 of Symbol Technologies.
The GPRS connection in México is offered by Telcel & Movistar, but at south of Veracruz State the GPRS connection only is available by Telcel. The GPRS Provider in México offer plans of 50Mb BandWidth for $ 55.00 dlls + 15 percent of tax, then to download my DataBase File of 10Mb file size is the 20% of BandWidth Limit, this indicate tha only I could to download five times to the month. To resolve this Problem that represent money for the company, I did use zlib, an Open Source library compression. Using Zlib with gzip in Linux I can to diminish of 10 Mb to 2.5Mb file size, and in the terminal I can download this file by mean of OpenNetCF.Net.Ftp and Uncompress the file with ZlibCE Library, therefore I saving seventy five percent of bandwith.
In linux you can to create a GZIP File with the following command:
gzip-c MyFile.txt > MyFile.gz
And you can to add more files to your gzip file created :
gzip-c MyOtherFile.txt >> MyFile.gz
And you can to develop a program in C# to uncompress the Gzip File
using System;
using System.Text;
using System.IO;
using OpenNETCF.Compression;
namespace zlibSampleCS {
class Program { staticvoid Main(string[] args) {
UncompressGZFile(@"\Application\zlibce.gz", @"\Application\zlibce.dll"); }
You will need zlibce.dll installed in the directory of your application and also OpenNetcf.Compression.ZlibCE.dll, this dynamic libraries you can get from http://OpenNetCF.com/zlibce/
If You can to get more info you should to visit OpenNetCF Site[http://www.opennetcf.org]
Note: if you see some error of grammar in my writing, put a post and correct to me please.
Pongo a su disposición un Script en PHP que permite exportar archivos CSV a una Base de Datos de SQLite.
Objetivo:
El fin de este script es exportar cualquier archivo CSV, con cualquier longitud de campos y cualquier numero de registros a una tabla específica de SQLite.
Limitantes:
No valida la información contenida dentro del archivo CSV, solo realiza inserts. Pueden implementar alguna función que haga la validación.Pueden descargar el script del Siguiente URL.PHPCSV2SQLite
O directamente desde Source Forge Historia:Este script fué implementado para incorporarlo en un sistema de captura de datos para terminales móviles.Requería extraer 35 tablas de una Base de Datos Legacy y Propietaria con cerca de 100,000 registros en total, por lo que solo era posible extraer la información en CSV .En un inicio mis planes era usar SQL Mobile Server 2005 para Windows Mobile 2005 pero encontré las siguientes liminates que me hicieron optar por SQLite
La base de datos de SQL Mobile Server es propietaria.
No puedo manipular el fichero SDF de SQL Mobile Server en Windows XP, solo en los dispositivos móviles, por lo que la importación solo podría hacerla en las terminales.
El tiempo de importación de los registros CSV en la terminal es promedio de 100 registros por minuto con SQL CE, imagínense importar 100,000 registros.
Puedo hacer replicación entre MS SQL Server y SQL Server Mobile, pero esto requeriria tener las terminales en sitio, aparte el tiempo de replicación sigue siendo muy lento para hacer la inserción de los registros, sin contar las conexiones que debería de hacer para que las terminales lo hagan vía GPRS.
No podría usar replicación primero porque los terminalistas estarían en zonas alejadas conectados vía GPRS, por lo que una replicación sería completamente insegura al intentar transmitir los datos.
Diariamente se requiere hacer esta replicación, y existen más de 20 terminales, lo que se requeriría una licencia del servidor MS SQL Server y una licencia por cada conexión de los clientes, a menos que se tuviera una licencia por procesador.
Con SQLite me evité dolores de cabezas por lo siguiente:
Importar las mismas 35 tablas junto con sus 100,000 registros me toma solo 17 segundos.
No requiero hacer replicaciones o conexiones raras entre las terminales y algun servidor, solo compactar la Base De Datos y transmitir el archivo vía GPRS cosa que me toma 5 minutos.
La librería de la Base de Datos va empotrada dentro del código de la aplicación, por lo que no requiero instalar algún tipo de servidor o aplicación extra más que la mía para que funcione la base de datos de SQLite
Puedo exportar cualquier esquema y datos de una Base de Datos, sí ! hasta tipos Blob.Puedo operar la Base de datos en Linux, Mac OS X Windows, FreeBSD,PocketPC2002, 2003, Windows Mobile 2005, Windows CE, etc.. y existen multiples herramientas y lenguajes para hacerlo.
Es Software Libre.
Es por eso que este script me ayudó a exportar toda la información de la Base de Datos a las PDAs sin dolores de cabeza, y cómo aportación lo pongo a su disposición libremente para que puedan usarlo en algún desarrollo.
Esta es la línea que me permite exportar la información del archivo CSV
$_registros["PRODUCTS"]= FileToTable("./catalogos/PRODUCTS.CSV",$dbHandle,$separador,$delimitador,"PRODUCTS",$_fields_productos,$debug); // $_registros["PRODUCTS"] recibe la cantidad de registros del archivo CSV // FileToTable función que llamo para exportar el archivo // Ruta del archivo CSV // $dbHandle Conector de la Base de Datos SQLite // $separador caracter de separación de campo del archivo CSV // $delimitador caracter delimitador de campo del archivo CSV // "PRODUCTS" nombre de la tabla // $_fields_productos array que contiene la descripción de los campos de la tabla // $debug bandera para mostrar los registros no insertados en la tabla
Hace unos meses durante el análisis de una aplicación que está corriendo ya ahora en Dispositivos Móviles con Windows Mobile 2005 y desarrollada en C# con Visual Studio, estuve buscando información sobre diversas bases de datos que corrieran en Windows Móbile 2005 y tuvieran bastantes fortalezas como :
Poca Administración debido a las características de los Dispositivos Móviles.
Soporte de SQL Stándar.
MultiPlataforma para poder desarrollar interfaces vía Web así como aplicaciones de escritorio tanto en Linux, Windows u otra plataforma sin tener que hacer procedimientos de migración.
Mayor Velocidad en ejecución de Querys.
Herramientas de Monitoreo multiplataforma.
Portabilidad, esto significaría que yo pudiera procesar un archivo de la base de datos en un sitio remoto vía web con Php, Python, Perl, java o alguna otra herramienta, descargarla al dispositivo móvil y operar la base de datos sin tener que hacer un proceso de importación o migración en la PDA.En la búsqueda encontré un BenchMark mostrado por PocketMagazine en la siguiente URL http://www.pocketpcmag.com/_archives/Aug06/databases.aspx
Los archivos SDF de la Base de datos de SQL Server CE no pueden ser consultados cómo tal en Windows XP ya no se diga en otras versiones anteriores de Windows.
Para importar un catálogo necesitamos hacer una replicación de la BD, la cual el servidor debe ser MS SQL Server.
Para poder hacer la replicación de cada terminal con el servidor, se requiere una Licencia por cada dispositivo móvil, esto si no se cuenta con una licencia por Procesador. El servidor para Windows Mobile no tiene costo.
La replicación de MS SQL Server a SQL Server CE implicaría tener una conexión directa Vía Active Sync o TCP/IP al servidor, aparte que la importación de las transacciones consume 100 registros por minuto, lo que importar un catálogo de 30,000 registros nos llevaría 300 Minutoslo que equivale a tener 5 horas al operador esperando apróximadamente.
El footprint de la base de datos va de 2-3Mb por lo que la capacidad de almacenamiento en la terminal portátil disminuiría considerablemente.
Exportar la información de la PDA al servidor requiere otra replicación y conexión al servidor MS SQL Server.
El desarrollo bajo SQL Server CE es propietario y solo se puede realizar desde Microsoft Visual Studio .Net 2003 ó 2005.
La Base de datos puede ser creada en Linux, Windows, Mac, FreeBSD, etc.. y con solo copiar el archivo a la terminal vía Active Sync, podemos usarla en la PDA sin ningún problema, una copia de un archivo con cerca de 500,000 registros en 35 tablas diferentes nos costaría aproximadamente 1 minuto.
Podemos procesar el archivo de SQLite con diversas herramientas, por ejemplo que una terminal se conecte a un Servicio Web, en dónde se tienen catálogos de clientes, proveedores, productos y otros catálogos, la terminal podría conectarse y descargar esa base de datos y tener todo el esquema y datos en la PDA en tan solo segundos.
SQLite soporta Querys de SQL Estándar lo que la hace muy poderosa al realizar las consultas para diversos procesos.
No tiene costo pero mejor aún es Software Libre.
El desarrollo con SQLite puede ser realizado en diversas herramientas tanto propietarias como libres Véase la multitud de opciones Aquí
Despues de este breve análisis añado al BenchMark de Pocket Magazine otras características a considerar de SQLite interesantes si no es que únicas en comparación a otras Bases de datos tanto libres como propietarias corriendo bajo Dispositivos Móviles.
Aquí un comentario de Robert Simpson desarrollador del Ado Net Provider para SQLite y Visual Studio 2005 .Net y el Compact Framework 2.0 de Microsoft.
"SQLite is faster than SQL Mobile, and SQLite's database files are smaller.In a couple of simple tests inserting, selecting and updating an Int64,SQLite was more than 10x faster. Inserts/updates that took minutes in SQLMobile took seconds in SQLite." http://phylevn.mexrom.net/data/files/SQLitebyRobertSimpson.txt
Comentarios Recientes