Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.hosting: OFERTA Multi Dominio por 40.95 Eur al mes

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

20/oct/2006
Repetimos: ya que de vez en cuando es bueno que sepas que cosas te facilitarán las respuestas:
-No repitas mensajes,
-Intenta escribir un asunto adecuado a tu duda,
-No personalices (no indiques el nombre de quien quieres que responda),
-Explica bien tu duda, ten en cuenta que el que lee no puede leer tu mente y necesita saber todo lo que tu sabes para poder ayudarte.
Gracias.

  Foro: Bases.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57462 - Mensaje 102 nivel 15 estado 1 sintaxis incorrecta cerca de ')'
IDAsuntoFechaNick 
57462 Mensaje 102 nivel 15 estado 1 sintaxis incorrecta cerca de ')'22/01/14 17:08SkullBurn   
Buen día foro, estoy realizando un query el cual me permita crear una tabla con el nombre del archivo que me llega, para lo cual realizo la creación de una tabla temporal, luego de esto inserto los datos del archivo en la tabla temporal hasta ahí todo bien, luego intento insertar los registros que se encuentran en la tabla temporal a la tabla "física", pero al intentar hacerlo me genera el siguiente error:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ')'.

Le coloco para q imprima los resultado y presenta lo siguiente:

\\172.22.150.142\sidec\descargaArchivos\FolderDiasON\DiasON_0120.csv

(408512 row(s) affected)

(408512 row(s) affected)
INSERT[DiasON_0121]
(CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DIA_AC)

Aquí el código:

DECLARE @table VARCHAR(100), @query NVARCHAR(300), @dia INT, @mes INT
, @valorFecha NVARCHAR(20), @valorMes NVARCHAR(20), @valorDia NVARCHAR(20)
SET @dia = DAY(GETDATE()) -1
SET @mes = MONTH(GETDATE())
SET @valorMes = (CASE WHEN @mes < 10 THEN '0' + CONVERT(VARCHAR(2), @mes) ELSE CONVERT(VARCHAR(2), @mes) END)
SET @valorDia = (CASE WHEN @dia < 10 THEN '0' + CONVERT(VARCHAR(2), @dia) ELSE CONVERT (VARCHAR(2), @dia) END)
SET @valorFecha = @valorMes + '' + @valorDia
--PRINT @valorFecha
SET @table = N'DiasON_' + @valorFecha--CONVERT(VARCHAR(10), @valorFecha, 103)
--PRINT @table

IF NOT EXISTS(SELECT * FROM SYSOBJECTS WHERE name = @table) BEGIN
SET @query = N'CREATE TABLE [dbo].[' + @table + N'](CUSTOMER_ID VARCHAR(50),
ACTIVATION_DATE VARCHAR(50), NEXT_DISCONNECT_DATE VARCHAR(50), DIA_AC VARCHAR(20))' --' + @valorFecha +
EXEC (@query)
DECLARE @fechaActual DATETIME, @nameFile NVARCHAR(20), @rutaFile NVARCHAR(200)
, @rutaArchivo NVARCHAR(250), @comando NVARCHAR(400)
SET @fechaActual = DATEADD(DAY, -1, GETDATE())
SET @nameFile = 'DiasON_0120.csv'
SET @rutaFile = '\\172.22.150.142\sidec\descargaArchivos\FolderDiasON\'
SET @rutaArchivo = @rutaFile + @nameFile
PRINT @rutaArchivo
--DROP TABLE #TableTemporary
--DROP TABLE DiasON_0121
CREATE TABLE #TableTemporary (
CUSTOMER_ID VARCHAR(120) NULL, ACTIVATION_DATE VARCHAR(120) NULL,
NEXT_DISCONNECT_DATE VARCHAR(120) NULL, DAYACTUAL VARCHAR(120) NULL)
SET @comando = 'BULK INSERT #TableTemporary FROM ''' + @rutaArchivo + '''
WITH (
FIELDTERMINATOR='';'',
ROWTERMINATOR=''\n'',
FIRSTROW = 2,
KEEPNULLS
)'
EXEC sp_executesql @comando
DECLARE @valTable VARCHAR(100)
SELECT CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DAYACTUAL
FROM #TableTemporary
SET @valTable = N'INSERT['+ @table + N']
(CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DIA_AC)'
PRINT @valTable
EXEC (@valTable)
END
ELSE BEGIN
PRINT 'EXISTE'
END

Nota este proceso lo tengo q hacer automático es decir sin intervención del usuario, es por eso que necesito crear las tablas con los nombres del archivo. Gracias de antemano por su ayuda.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 71 - App. iniciada: 18/11/2017 18:43:39 GMT - La hora GMT del servidor es: 18/11/2017 19:36:37 GMT