SQL - Pasar datos

 
Vista:

Pasar datos

Publicado por j@ime (6 intervenciones) el 04/01/2005 12:37:06
Estoy importando datos desde access a una bbdd temporal en SQL y una vez en SQL distribuya los datos a una bbdd SQL .... si introduzco manualmente dato por dato si me los pasa donde esta definido, pero si lanzo el JOB programado de importacion desde access me mete los datos en la tabla temporal, pero no me los distribuye .... Uso un trigger de INSERT cuando se meten datos en la temporal y luego con un cursor que dejo en el trigger o creando un procedure .... de ninguna forma me los distribuye .... No se que hacer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar datos

Publicado por Isaías Islas (5072 intervenciones) el 04/01/2005 16:15:28
¿Que esta utilizando para IMPORTAR tus datos?, ¿Bulk Insert, DTS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar datos

Publicado por jaime (6 intervenciones) el 07/01/2005 13:01:45
Uso DTS ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Pasar datos

Publicado por Liliana (426 intervenciones) el 07/01/2005 15:04:19
Hola Jaime,
en las propiedades del DTS, en la solapa Opciones, deshabilita Usar Carga Rápida.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar datos

Publicado por j@ime (6 intervenciones) el 10/01/2005 09:21:57
Veras .... importo dsd access a SQL con DTS ... pero cuando uso un trigger sobre la tabla a la que importo para que cada vez que inserto me distribuya los datos donde deben estar .... no funciona al importar, en cambio prbando el trigger y metiendo datos manualmente, cada vez que meto uno si me lo distribuye .... no se que pasa ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Pasar datos

Publicado por Liliana (426 intervenciones) el 10/01/2005 12:18:04
Hola Jaime,
A ver si este es tu escenario:
Tengo una tabla Access:
clave2 nombre2
1 Luis
2 Ramon
3 Ana
Quiero pasarla a una tabla SQL (Tabla20) con un trigger, a través de DTS.
CREATE Tabla20 (clave smallint, nombre varchar(50))
CREATE Tabla201 (clave smallint, nombre varchar(50))
CREATE Tabla202 (clave smallint, nombre varchar(50))
Según el trigger, algunos datos de la tabla20 irán a la tabla201 y otros a la tabla202:
Código del Trigger:
CREATE TRIGGER TI_TABLA20 ON Tabla20
FOR INSERT
AS
INSERT TABLA201
SELECT * FROM INSERTED I WHERE I.Nombre = 'Ramon'

INSERT TABLA202
SELECT * FROM INSERTED I WHERE I.Nombre <> 'Ramon'
GO

Ejecuto una Tarea de Transformación de Datos desde la conexión Access a la SQL, sin la opción de Copia Rápida, y el resultado es el siguiente:
SELECT * FROM TABLA20
clave nombre
------ --------------------------------------------------
1 Luis
2 Ramon
3 Ana

SELECT * FROM TABLA201
clave nombre
------ --------------------------------------------------
2 Ramon

SELECT * FROM TABLA202
clave nombre
------ --------------------------------------------------
1 Luis
3 Ana
Es esto lo que necesitas?
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar datos

Publicado por jaime (6 intervenciones) el 10/01/2005 12:54:50
El caso es ese, pero cuando se ejecuta el DTS e introduce por ejemplo 20 datos de golpe en la Tabla20 ... el trigger no distribuye los datos a las otras tablas .... si lo meto manualmente funciona bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar datos

Publicado por jaime (6 intervenciones) el 10/01/2005 12:58:11
Este es el caso:

CREATE TRIGGER actualizar
ON hoywin

FOR INSERT

AS
DECLARE
@Nombre QtmString,
@Ref numeric,
@Col numeric

SELECT @Nombre=i.Cliente, @Ref=i.Referencia, @Col=i.Colada
FROM inserted i

EXEC INSERCION_DATOS @Nombre,@Ref,@Col

__________

CREATE PROCEDURE INSERCION_DATOS
@Nombre QtmString,
@Ref numeric,
@Col numeric

AS

INSERT destino(Nombre,Ref,Col) VALUES
(@Nombre,@Ref,@Col)
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Pasar datos

Publicado por Liliana (426 intervenciones) el 10/01/2005 15:22:32
Jaime, el problema del trigger es que estás asumiendo que entra una sola fila. Un trigger se dispara por cada instrucción INSERT (o DTS), y no por cada fila, si? Por eso es que funciona cuando lo hacés a mano.
Ahora, imagino que el SP que estás mandando es a modo de ejemplo porque el insert es siempre en Destino y desde el comienzo estamos hablando de "distribuir" la información que entra ¿no?
Si tenés en cuenta esta aclaración que te hago de cómo funciona un trigger, verás que la llamada al SP no es válida, no habrá manera de pasarle los parámetros para cada fila.
Buscá (seguramente la hay) alguna identificación para insertar en las tablas que corresponden DENTRO del trigger, siguiendo el ejemplo que te pasé.
Creo que hay alguna forma pasando parámetros globales a los DTS, pero no lo usé nunca, además, hasta donde entiendo, tendrías que pasar el nombre de la tabla, y esto ya lo estaría convirtiendo en SQL dinámico, cosa que no te aconsejo.
Espero que te sirva,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar datos

Publicado por jaime (6 intervenciones) el 10/01/2005 16:14:45
CLARO!!!! el funcionamiento del INSERT, esta claro, no me habia dado cuenta .... tb he probado con esto, pero no hay forma :

CREATE TRIGGER actualizar
ON hoywin

FOR INSERT

AS
DECLARE
@Nombre QtmString,
@Ref numeric,
@Col numeric,

@Datos CURSOR SELECT h.Cliente,h.Referencia,h.Colada FROM hoywin h
INNER JOIN inserted i ON h.Ensayo=i.Ensayo

BEGIN

OPEN Datos

FETCH NEXT FROM Datos INTO @Nombre,@Ref,@Col
WHILE @@FETCH_STATUS = 0

BEGIN

EXEC INSERCION_DATOS @Nombre , @Ref , @Col
FETCH NEXT FROM Datos INTO @Nombre,@Ref,@Col

END

CLOSE Datos
DEALLOCATE Datos

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Pasar datos

Publicado por Liliana (426 intervenciones) el 10/01/2005 16:29:44
Jaime,
Te aconsejo que no uses cursores, y menos dentro de un trigger, el motor te mirará con odio, te lo aseguro.
¿Ves algún inconveniente para seguir la lógica del ejemplo que te mandé? Para la necesidad que planteaste no dudaría en usar esa opción. Si me contás podría ver de ayudarte más concretamente.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar