Insercion de datos masivos a base de datos(POSTGRES)

756 views
Skip to first unread message

Andres Camilo Sanchez Bejarano

unread,
Mar 18, 2016, 12:47:57 AM3/18/16
to Django-es
 Buen dia.

Disculpen tengo muchas dudas sobre la inserción de datos masivos de excel a django(teniendo en cuenta que ya puedo guardar archivos pero no puedo pasar los campos de excel a la base de datos correspondientes ) si alguien me pudiera ayudar seria genial y le estaria agradecido

Francisco Pandol

unread,
Mar 18, 2016, 7:46:10 AM3/18/16
to djan...@googlegroups.com
La mejor forma de recibir ayuda en una lista de correo es explicando claramente cuál es tu duda, cómo intentaste resolverlo y qué problemas encontraste.


2016-03-17 16:38 GMT-03:00 Andres Camilo Sanchez Bejarano <acsanch...@gmail.com>:
 Buen dia.

Disculpen tengo muchas dudas sobre la inserción de datos masivos de excel a django(teniendo en cuenta que ya puedo guardar archivos pero no puedo pasar los campos de excel a la base de datos correspondientes ) si alguien me pudiera ayudar seria genial y le estaria agradecido

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Francisco Pandol

Rafael E. Ferrero

unread,
Mar 18, 2016, 8:26:38 AM3/18/16
to djan...@googlegroups.com
Andres, interpreto que vos tenes un excel con N filas y queres guardar esos datos en la base de datos donde consultas con Django.

Yo haría un form que haga un upload del excel y haría un procedimiento que se ejecute al finalizar correctamente el upload del excel que recorra el excel y vaya haciendo inserts en la base de datos con el ORM de Django o con Raw SQL

Saludos


Rafael E. Ferrero

crazy_r

unread,
Apr 7, 2016, 2:40:07 AM4/7/16
to Django-es
Buenas Andrés, yo lo que haría sería un comando que procesara dicho excel e introdujera los datos en los correspondientes modelos de Django que hayas creado:


Espero que ayude.
Saludos.

Manuel A. Estevez Fernandez

unread,
Apr 7, 2016, 10:20:10 AM4/7/16
to Django-es
Hola Andres,

sería bueno conocer la cantidad de registros y si van a una sola tabla, igual y te convendría utilizar la sentencia COPY para cargar información.

Saludos.

Antonio Samper

unread,
Apr 7, 2016, 10:44:19 AM4/7/16
to djan...@googlegroups.com
modelo.objects.bulk_create(lista), almacenas la información en una lista, después vuelcas todo a la bd, esto hace un insert masivo de datos en el modelo que menciones

saludos

Libre de virus. www.avast.com

--

Angel Alvarez

unread,
Apr 7, 2016, 10:50:26 AM4/7/16
to djan...@googlegroups.com
Si ya tiene acceso a la planilla , tiene que trabajarla con http://www.python-excel.org/
Es muy simple, abris la planilla, lees las celdas y cargas los datos en tus modelos


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Angel C. Alvarez

Gonzalo V

unread,
Apr 7, 2016, 10:23:15 PM4/7/16
to djan...@googlegroups.com

Puedes conectar también directamente excel a postgre a traves del driver odbd, a tu base de datos y tabla, luego con vba+sql actualizas.

saludos,
desde un móvil.

Mariano Ramirez

unread,
Apr 8, 2016, 9:34:19 AM4/8/16
to Django-es
Como te an dicho antes bulkcreate es buena opción. https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create

Lo otro que tambien me funciono es usar https://django-import-export.readthedocs.org/en/latest/

Igualmente del método que uses te recomiendo usar celery para que el archivo se proceso en background. y el usuario no tenga que esperar tanto. 

Jose Miguel Amaya Camacho

unread,
Apr 8, 2016, 9:56:49 AM4/8/16
to djan...@googlegroups.com
Yo he hecho algo parecido pero cargando datos desde un archivo csv te comparto este código por si te sirve:

class CargarProductos(FormView):
    template_name = 'cargar_productos.html'
    form_class = FormularioCargarProductos
   
    def form_valid(self, form):
        data = form.cleaned_data
        archivo = Archivo(docfile = data['docfile'])           
        archivo.save(form)
        csv_filepathname=settings.MEDIA_ROOT+'/'+str(archivo.docfile)
        dataReader = csv.reader(open(csv_filepathname), delimiter=',', quotechar='"')
        grupo = GrupoProductos.objects.get(codigo = '000001')
        for fila in dataReader:
            producto = Producto()
            producto.descripcion=unicode(fila[1], errors='ignore')
            cod_und = fila[2][0:5]
            try:
                und = UnidadMedida.objects.get(unidad=cod_und.strip())                   
            except UnidadMedida.DoesNotExist:
                und = UnidadMedida()
                und.unidad = cod_und
                und.descripcion = fila[2]
                und.changed_by = self.request.user
                und.save()
            producto.unidad_medida = und
            producto.grupo_productos = grupo
            if fila[3]<>'':
                producto.precio = fila[3]
            else:
                producto.precio = 0
            producto.desc_abreviada = fila[5]
            try:
                producto.save()
            except:
                print producto.descripcion           
        return HttpResponseRedirect(reverse('compras:productos'))

--
Reply all
Reply to author
Forward
0 new messages