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

importar datos de un txt a una tabla de sqlserver 2008

Estas en el tema de importar datos de un txt a una tabla de sqlserver 2008 en el foro de SQL Server en Foros del Web. hola que tal. Mi Problema es el siguiente. Tengo que importar de un archivo de texto datos para llenar una tabla de una base de ...
  #1 (permalink)  
Antiguo 12/07/2013, 11:54
 
Fecha de Ingreso: octubre-2012
Mensajes: 6
Antigüedad: 11 años, 5 meses
Puntos: 0
Información importar datos de un txt a una tabla de sqlserver 2008

hola que tal. Mi Problema es el siguiente. Tengo que importar de un archivo de texto datos para llenar una tabla de una base de datos.
el codigo que utilizo es el siguiente:




create procedure subir_datos
as
begin

BULK

INSERT nombreDeMiTabla
FROM 'C:\prueba.txt' --- Ruta del TXT
WITH

( FIELDTERMINATOR = '\t', --separa campos
ROWTERMINATOR = '\n' ) --separa filas
end

con ese codigo me sirve al 100, pero cuando intento cambiar la ruta del TXT por una variable varchar() me marca error.
por ejemplo




create procedure subir_datos
(
@ruta varchar(max)
)
as
begin

BULK

INSERT nombreDeMiTabla
FROM @ruta --ruta TXT
WITH

( FIELDTERMINATOR = '\t', --separa campos
ROWTERMINATOR = '\n' ) --separa filas
end

la variable no me sirve, ya lo intente cambiar la variable a text, nvarchar y otras.
alguien sabe que necesito
  #2 (permalink)  
Antiguo 12/07/2013, 11:57
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, 8 meses
Puntos: 774
Respuesta: importar datos de un txt a una tabla de sqlserver 2008

si que lo hagas asi:

Código SQL:
Ver original
  1. CREATE PROCEDURE subir_datos
  2. (
  3. @ruta VARCHAR(MAX)
  4. )
  5. AS
  6. BEGIN
  7.  
  8. DECLARE @query Nvarchar(MAX)
  9. SET @query='
  10. BULK
  11.  
  12. INSERT nombreDeMiTabla
  13. FROM ' +  @ruta + '
  14. WITH
  15.  
  16. ( FIELDTERMINATOR = ''\t'',
  17. ROWTERMINATOR = ''\n'')'
  18.  
  19. EXEC sp_executesql @query
  20. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/07/2013, 12:06
 
Fecha de Ingreso: octubre-2012
Mensajes: 6
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: importar datos de un txt a una tabla de sqlserver 2008

me sirvio bien amigo.
lo unico adicional que tuve que agregar fue lo siguiente:

cuando mando a llamar el procedimiento desde sql server 2008 tengo que agregarle " " comillas dobles, asi:

execute subir_datos " 'C:\prueba.txt' "

y desde c# solo concatenarle en el parametro igualmente las comillas dobles
  #4 (permalink)  
Antiguo 12/07/2013, 12:08
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, 8 meses
Puntos: 774
Respuesta: importar datos de un txt a una tabla de sqlserver 2008

o tambien

Código SQL:
Ver original
  1. CREATE PROCEDURE subir_datos
  2. (
  3. @ruta VARCHAR(MAX)
  4. )
  5. AS
  6. BEGIN
  7.  
  8. DECLARE @query Nvarchar(MAX)
  9. SET @query='
  10. BULK
  11.  
  12. INSERT nombreDeMiTabla
  13. FROM ' + CHAR(39) +  @ruta + CHAR(39) + '
  14. WITH
  15.  
  16. ( FIELDTERMINATOR = ''\t'',
  17. ROWTERMINATOR = ''\n'')'
  18.  
  19. EXEC sp_executesql @query
  20. END

y asi solo haces un

execute subir_datos 'c:\'

pero que bien que te funciono :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: Ninguno
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:09.