Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Estas en el tema de Copiar excel a mi base de datos pero usando un procedimiento almacenado. en el foro de SQL Server en Foros del Web. Hola a todos. Tengo un archivo de excel el cual quiero copiar a mi base de datos. Y para ello utilizo un procedimiento almacenado el ...
  #1 (permalink)  
Antiguo 16/11/2013, 09:56
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Hola a todos.


Tengo un archivo de excel el cual quiero copiar a mi base de datos. Y para ello utilizo un procedimiento almacenado el cual hace las relaciones de cada uno de mis registros.
Mi duda ¿es posible que SqlServer solo con una instrucción empiece a hacer el copiado utilizando mi procedimiento almacenado, para que las relaciones se hagan adecuadamente?.
  #2 (permalink)  
Antiguo 18/11/2013, 07:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

si usando bulk insert o bcp :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/11/2013, 12:48
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Muchas gracias, pero ahora que busco ejemplos mas especificos no encuentro uno que me explique con claridad como es que se usa.

tienes una liga que me recomiendes para entender con mayor claridad. Porfavor
  #4 (permalink)  
Antiguo 19/11/2013, 12:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/11/2013, 16:07
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Bien estoy intentandolo hacer con un procedimiento almacenado y para poder modificar esta parte me marca error

Código SQL:
Ver original
  1. SELECT *  FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0 Xml; IMEX=1; Database=' & @path & ';' , @objCmdSelect);

la variable @path la esoty mandando llamar de la aplicación me trae todo el nombre y no me deja concatenarlo.

Última edición por gnzsoloyo; 19/11/2013 a las 16:12
  #6 (permalink)  
Antiguo 19/11/2013, 16:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

en sql no se usan los & para concatener se usa +

Código SQL:
Ver original
  1. SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0 Xml; IMEX=1; Database=' + @path + ';' , @objCmdSelect);
saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 19/11/2013, 16:13
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Si lo intente pero me sigue mandando error, dice que esta en la espera de un , o un ;
  #8 (permalink)  
Antiguo 19/11/2013, 16:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

verifica que estes enviando los 3 valores y que tu @objcmdselect sea el esperado :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 19/11/2013, 16:40
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Este es el ejemplo que tengo o en el que me estoy guiando

( ‘Microsoft.Jet.OLEDB.4.0′, ‘Excel 8.0;Database=C:\comunas2.xls;HDR=Yes’, ‘SELECT * FROM [Sheet1$]‘)

la dirección de donde se encuentra el archivo se supone que es el @path que traigo desde mi aplicación y también mi otra variable es una consulta.
  #10 (permalink)  
Antiguo 20/11/2013, 09:05
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 11 años, 11 meses
Puntos: 15
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Hola aid_val, probaste guardando el .xls a un archivo .csv y desde el mismo realizar un BULK INSERT?

Saludos

damimg
  #11 (permalink)  
Antiguo 20/11/2013, 09:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

prueba con esto:

Código SQL:
Ver original
  1. DECLARE @path VARCHAR(MAX)
  2. DECLARE @query VARCHAR(MAX)
  3. DECLARE @objCmdSelect VARCHAR(MAX)
  4. SET @path='C:\columnas2.xls'
  5. SET @objCmdSelect='SELECT * FROM [Sheet1$]'
  6. SET @query='SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'' ,''Excel 12.0 Xml; IMEX=1; Database=' + @path + ';' + CHAR(39) + ',' + CHAR(39) +  @objCmdSelect + CHAR(39) + ');'
  7. EXEC sp_executesql @query

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 21/11/2013, 18:41
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

M estoy un poco ignorante con esto, no me salio lo anterior ya no me marco error y lo ejecute pero no pasa nada.
Bien intente hacer esta consulta solo para ver si puedo consultar los datos de mi excel e ir entendiendo con mayor claridad el concepto.

Código SQL:
Ver original
  1. SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Users\Propietario\Proyectos Valeria\archivoscargados\CATALOGO DE OBRA PURISIMA.xlsx ;HDR=Yes', 'SELECT * FROM [presupuesto$]')

pero ahora me dice

Cita:
No se puede crear una instancia del proveedor OLE DB "Microsoft.ACE.OLEDB.12.0" para el servidor vinculado "(null)".
y no definitivamente no se porque sea busque, y solo me menciona otros procedimientos almacenados.. me podrias ayudar a entender o tener mas claro este concepto porfavor?
  #13 (permalink)  
Antiguo 22/11/2013, 08:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

lo que pasa es que necesitas tener instalada la libreria "Microsoft.ACE.OLEDB.12.0" o el ODBC correspondiente

intenta con esto:

http://www.aspsnippets.com/Articles/...rver-null.aspx

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 22/11/2013, 18:52
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Esto sigue sin funcionar jijijiji,

ahora resulta qu eme da este error y en internet no encuentro algo que me diga porque


No se ha registrado el proveedor OLE DB "Microsoft.Jet.OLEDB.12.0".
  #15 (permalink)  
Antiguo 22/11/2013, 18:53
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 10 meses
Puntos: 5
Respuesta: Copiar excel a mi base de datos pero usando un procedimiento almacenado.

Luego me puse a leer algo de servidores vinculados paraver si puedo hacerlo con uno y encontre esto

Código SQL:
Ver original
  1. Sp_AddLinkedServer
  2. @Server  = N'ServidorExcel',
  3. @SrvProduct = N'Excel',
  4. @Provider   = N'Microsoft.Jet.OLEDB.12.0',
  5. @DataSrc    = N'C:\Users\Propietario\Proyectos Valeria\archivoscargados\CATALOGO DE OBRA PURISIMA.xlsx',
  6. @ProvStr    = N'Excel 12.0'
  7.  
  8. sp_serveroption
  9. @server  =N'ServidorExcel',
  10. @optname    =N'collation name',
  11. @optvalue   =N'SQL_Latin1_General_CP1_CI_AS'
crees que esto me sea util para lo que busco hacer

Última edición por gnzsoloyo; 22/11/2013 a las 19:26

Etiquetas: almacenado, excel, procedimiento, registro, server, sql, usando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:02.