|
Saludos lista,
Estoy trabajando en un proyecto en el cual empleo SQLObject para manipular una base de datos en SQLite, pero aunque el comando .import existe en la línea de comandos de SQLite, no encuentro una opción, o algún mecanismo que me permita hacer algo parecido desde SQLObject. El problema es que son casi 200 mil registros y cargarlos línea a línea, o empleando la librería csv toma demasiado tiempo. Cada campo está separado por punto y coma. Existirá alguna forma de hacer esto con este ORM?
Gracias --
Juan Pablo Valois valencia Estudiante de Ingeniería de Sistemas y Computación Universidad Tecnológica de Pereira Pereira - Risaralda - Colombia _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
Podría generar una base de datos vacía en SQLObject y luego abrir la
base de datos generada con SQLite y usar el comando import. Tiene que estar seguro que la base de datos generada espere los campos en el mismo orden en el que los tiene en el archivo CSV. Una opción más recomendable y menos propensa a errores en mi opinión es abrir el archivo línea por línea y crear cada registro con SQLObject. 200K registros no es mucho, no creo que se demore mucho. Más se demora esperando a que contesten en esta lista de correo :P Manuel. El día 19 de noviembre de 2009 20:38, Juan Pablo Valois Valencia <[hidden email]> escribió: > Saludos lista, > Estoy trabajando en un proyecto en el cual empleo SQLObject para manipular > una base de datos en SQLite, pero aunque el comando .import existe en la > línea de comandos de SQLite, no encuentro una opción, o algún mecanismo que > me permita hacer algo parecido desde SQLObject. El problema es que son casi > 200 mil registros y cargarlos línea a línea, o empleando la librería csv > toma demasiado tiempo. Cada campo está separado por punto y coma. Existirá > alguna forma de hacer esto con este ORM? > Gracias > -- > Juan Pablo Valois valencia > Estudiante de Ingeniería de Sistemas y Computación > Universidad Tecnológica de Pereira > Pereira - Risaralda - Colombia > > _______________________________________________ > Pythoneando... > Pycolombia mailing list > [hidden email] > http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia > > Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
Gracias por tu pronta respuesta Manuel,
La pregunta sería entonces cómo podría usar el comando import desde Python con SQLObject? Respecto a cargar cada registro línea a línea, es precisamente lo que hago, y créeme, no se si es el ORM pero con 5000 registros se tarda 12 mins (!!!).
Gracias de nuevo.
El 19 de noviembre de 2009 20:54, Manuel Alejandro Cerón Estrada <[hidden email]> escribió: Podría generar una base de datos vacía en SQLObject y luego abrir la -- Juan Pablo Valois valencia Estudiante de Ingeniería de Sistemas y Computación Universidad Tecnológica de Pereira Pereira - Risaralda - Colombia _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
In reply to this post by Juan Pablo Valois Valencia
En SQLObject existe un módulo llamado util con algunas librerías interesantes como csvexport y csvimport. Alquien las ha usado alguna vez? la documentación no está muy completa que digamos...
Gracias. El 19 de noviembre de 2009 20:38, Juan Pablo Valois Valencia <[hidden email]> escribió: Saludos lista, -- Juan Pablo Valois valencia Estudiante de Ingeniería de Sistemas y Computación Universidad Tecnológica de Pereira Pereira - Risaralda - Colombia _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
Hola
El día 19 de noviembre de 2009 22:38, Juan Pablo Valois Valencia <[hidden email]> escribió: > En SQLObject existe un módulo llamado util con algunas librerías > interesantes como csvexport y csvimport. Alquien las ha usado alguna vez? la > documentación no está muy completa que digamos... Se podría intentar usar ese módulo. Pero es necesario modificar el archivo CSV primero para agregar la cabecera. Igual no creo que ese método se mucho más rápido que leer el archivo línea por línea y agregar los elementos. > La pregunta sería entonces cómo podría usar el comando import desde Python > con SQLObject? El api de sqlite en python no tiene la opción de importar. Podría intentar usar el programa sqlite3 con el módulo subprocess. Pero de todos modos yo tampoco creo que esto sea super rápido. > Respecto a cargar cada registro línea a línea, es precisamente lo que hago, > y créeme, no se si es el ORM pero con 5000 registros se tarda 12 mins (!!!). > Gracias de nuevo. ¿Por qué es importante que sea rápido? ¿Acaso hay que hacer esto muchas veces? Yo pensaría que la importación sólo se hace una vez. _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
No comprendo bien lo de la línea de cabecera. Debe tener alguna sintaxis especial?
Lo que sucede con las rutinas nativas de sqlite como el import, es que requieren estar en la variables de entorno de Windows y eso implicaría trabajo adicional para el usuario. Y finalmente el gran problema es que el archivo sí requiere cargarse en repetidas ocasiones en la base de datos. Te agradezco la ayuda, alguna recomendación? El 19 de noviembre de 2009 23:07, Manuel Alejandro Cerón Estrada <[hidden email]> escribió: Hola -- Juan Pablo Valois valencia Estudiante de Ingeniería de Sistemas y Computación Universidad Tecnológica de Pereira Pereira - Risaralda - Colombia _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
|
Saludos,
Les comento que tuve que crear una conexión simultánea con la librería sqlite3 a la misma base de datos (el mismo archivo), pensé que por las propiedades de archivos en Windows esto no sería posible, porque debo escribirlo también al mismo tiempo que el ORM lo está leyendo y escribiendo. Es notable la diferencia en tiempo, de 26 mins a menos de 10 segundos, luego lo único que hago es cerrar la conexión y listo, ya el ORM tiene el control de nuevo. Quizás no es el mejor método pero me ayudó bastante. Creo que SQLObject debería enfocarse también en la eficiencia de la transaccionalidad, así como Active Record del framework Ruby on Rails. Agradezco su ayuda y sus buenos deseos. El 19 de noviembre de 2009 23:26, Juan Pablo Valois Valencia <[hidden email]> escribió: No comprendo bien lo de la línea de cabecera. Debe tener alguna sintaxis especial? -- Juan Pablo Valois valencia Estudiante de Ingeniería de Sistemas y Computación Universidad Tecnológica de Pereira Pereira - Risaralda - Colombia _______________________________________________ Pythoneando... Pycolombia mailing list [hidden email] http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia |
| Powered by Nabble | Edit this page |
