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

procedimiento marca error

Estas en el tema de procedimiento marca error en el foro de SQL Server en Foros del Web. Hala estoy cargando archivos .CSV pero necesito hacerlo automatimente todos los dias para esto ya programe un SQL SErver Agent pero necesito que el nombre ...
  #1 (permalink)  
Antiguo 27/07/2011, 08:48
 
Fecha de Ingreso: julio-2011
Mensajes: 19
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta procedimiento marca error

Hala estoy cargando archivos .CSV pero necesito hacerlo automatimente todos los dias para esto ya programe un SQL SErver Agent pero necesito que el nombre de los archivos que cargo se cambien tabien los archivoq ue cargo se generan a diario tabie cambia en nombre deacurdo a al fecha del dia.
necesitoq ue mi procemiento que tambie cambie el nombre para cargar los de lo contrario me karga el mismo archivo.

esto es loq ue tengo:

create procedure sp_bulkinsert (@anio varchar(4),@mes varchar(2),@dia varchar(2))
as
begin

bulk
insert tcsv
from 'C:\daily\papercut-print-log-'+ @anio + @mes + @dia +'.csv'

with
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
end
go

Me podrian ayudar con esto o darme un ejemplo por favor....
  #2 (permalink)  
Antiguo 27/07/2011, 09:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: procedimiento marca error

Lo que YO haria, seria ver que archivos hay en la carpeta, donde deben estar tus archivos y subirlos de acuerdo a su nombre.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 27/07/2011, 09:18
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: procedimiento marca error

y porque no haces un bat que te recorra la carpeta, este bat que mande llamar a tu procedure con un sql command y mande de parametro el nombre del archivo?? ya en el bat puedes condicionar que nada mas te obtenga los nombres de los archivos del dia de hoy por ejemplo

c:\>dir *_fecha.txt

y ya nada mas con esos nombres puedes mandar ejecutar tu procedure.....

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 27/07/2011, 09:49
 
Fecha de Ingreso: julio-2011
Mensajes: 19
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: procedimiento marca error

Cita:
Iniciado por iislas Ver Mensaje
Lo que YO haria, seria ver que archivos hay en la carpeta, donde deben estar tus archivos y subirlos de acuerdo a su nombre.
buelo esque el que los archivo se geeran a diario de esta manera:

papercut-print-log-2010-01-01.csv
papercut-print-log-2010-01-02.csv
papercut-print-log-2010-01-03.csv
papercut-print-log-2010-01-04.csv........

pero nesito que en mi bulk inser se cambiene l nombre automaticamete. la verdad soy nuevo en eso y ya o le encuetro forma espero y me puedas ayudar
  #5 (permalink)  
Antiguo 27/07/2011, 13:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: procedimiento marca error

Te voy a dar una idea de como podrias "subir" a una tabla temporal, el nombre de los archivos en un PATH o ruta y con una extension, csv, por ejemplo:

DECLARE @Path varchar(50), @Wildcard varchar(5), @Cmd varchar(150)
SET @Path = 'C:\'
SET @Wildcard ='*.*'--+@vTda

SET @Cmd = 'DIR "' + @Path + CASE WHEN RIGHT(@Path, 1) = '\' THEN ''
ELSE '\' END + @WildCard + '"'

CREATE TABLE #tmpBuscaFiles(id int Identity, line varchar(255))
INSERT INTO #tmpBuscaFiles
EXEC master..xp_CmdShell @Cmd

select * from #tmpBuscaFiles
__________________
MCTS Isaias Islas

Etiquetas: marca, procedimiento, server, sql
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:37.