Importación de datos de Excel a través de un procedimiento almacenado

Me gustaría ingresar el nombre de mi tabla con el SP, para que importe los datos de la hoja de Excel y los cargue en la base de datos. Pero, recibiendo el siguiente error. ¿Puedes por favor corregirlo? Gracias.

create proc Up_Export 
(
@Tablename as varchar(20) = null
)
AS
SET NOCOUNT ON
begin
INSERT INTO @Tablename --Receiving error over here, informs incorrect syntax near @tablename
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename)
set nocount off
end

preguntado el 21 de mayo de 12 a las 18:05

Irónicamente, tengo tal procedimiento almacenado. Sin embargo, aún no lo he documentado. En algún momento pronto, probablemente lo pondré en mi blog. -

Bienvenido a StackOverflow: si publica código, XML o muestras de datos, Por favor resalte esas líneas en el editor de texto y haga clic en el botón "ejemplos de código" ( { } ) en la barra de herramientas del editor para formatearlo y resaltarlo con sintaxis. -

no puedes INSERT en un varchar(20). necesitas usar sql dinámico. -

¿Está seguro de que el archivo de Excel en realidad se llama "@Tablename.xls" y no solo "Tablename.xls"? -

1 Respuestas

Veo dos cosas que no están bien.

Primero lo haces

INSERT INTO @Tablename 

No puede usar una variable en ese lugar. En su lugar, debe usar sql dinámico como este

exec
('
INSERT INTO ' + @Tablename + ' SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
''Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls'', ''select * from myTable'')
')

Tenga en cuenta que debe usar comillas simples dobles como '' dentro de la cadena. Se necesita "escapar" la comilla simple porque si no lo hiciera, señalaría el final de la cadena.

La segunda cosa que no parece correcta es el segundo argumento donde pones @Tablename

'Excel 8.0;Database=C:\..\..\..\packages\@Tablename.xls', @Tablename)

Debería tener algo como lo siguiente como su segundo argumento

'SELECT * FROM [Sheet2$]'

Donde Sheet2 es la hoja en su Excel

Pruebe algunas variaciones y preste atención a los comentarios que le da el analizador sql en caso de error. ¡Buena suerte!

contestado el 21 de mayo de 12 a las 23:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.