recorrer una tabla dentro de un DTS

17/08/2007 - 03:20 por Roberto | Informe spam
Hola amigos,

mi consulta es la siguiente hay alguna forma o manera de que pueda recorrer
una tabla desde un DTS en SQL Server 2000, se me habia ocurrido hacer un SP
pero tampoco se como llamarlo desde un DTS, y lo malo es que tiene que ser
desde un DTS y no desde un SP.

el requerimiento es que me mandan cada mes un archivo txt, con registros de
personas y eso pasarlo a SQL Sever 2000, hasta todo bien, pero al siguiente
mes mandaran la misma lista pero con mas usuarios... entonces si hoy tenia
100 y el mes que viene mandan 20 registros mas el archivo vendria con los 100
que ya tengo más los 20 más y me duplicaria los datos...

por favor

Help Me.

atte.

Roberto

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
17/08/2007 - 03:38 | Informe spam
En mi opinión es mucho más simple que usted, cando llega el momento de
insertar los datos que le llegaron, solamente inserte cuando detecta que
dicho dato no está en la tabla donde inserta.

Eso es muy facil de hacer usando SELECT-EXISTS (y varias otras formas) sin
tener que andar recorriendo fila por fila.

Pienselo como ejercicio de fin de semana :-)

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Roberto" wrote:

Hola amigos,

mi consulta es la siguiente hay alguna forma o manera de que pueda recorrer
una tabla desde un DTS en SQL Server 2000, se me habia ocurrido hacer un SP
pero tampoco se como llamarlo desde un DTS, y lo malo es que tiene que ser
desde un DTS y no desde un SP.

el requerimiento es que me mandan cada mes un archivo txt, con registros de
personas y eso pasarlo a SQL Sever 2000, hasta todo bien, pero al siguiente
mes mandaran la misma lista pero con mas usuarios... entonces si hoy tenia
100 y el mes que viene mandan 20 registros mas el archivo vendria con los 100
que ya tengo más los 20 más y me duplicaria los datos...

por favor

Help Me.

atte.

Roberto
Respuesta Responder a este mensaje
#2 julio
17/08/2007 - 14:24 | Informe spam
Roberto,
Es muy fácil y simple
Escribí un código que sea subir tu tabla a una tabla igual a la que subis
tus datos, pero con extensión tmp, y dejala para cada mes
Luego llená con el dts esa tabla en vez de la que tenés hasta ahora
una vez terminado esto, corrés un job de sql, es muy fácil hacerlo, que
ejecute un store procedure, que se invoca con la sentencia: exec nombre_del_sp
Para querecorra esa tabla, si te es difícil hacerlo, hacelo usando un
cursor, el ejemplo del libro del sql en línea es muy simple Y ANDA, y haces
que te devuelva un count del registro con esos datos leidos, si es cero o
null lo insertas, sino, no haces nada
Saluditos
Julio



"Roberto" wrote:

pero no hay manera de ejecutar un procedimiento almacenado desde vbscript
dentro del DTS... es muy buena tu respuesta pero esas son sentencias SQL y
dentro del DTS al cargar ocupo vbscript o javascript... eso me complica...
si puedes ser un poquito más especifico seria genial...

gracias de todos modos

"Gustavo Larriera (MVP)" wrote:

> En mi opinión es mucho más simple que usted, cando llega el momento de
> insertar los datos que le llegaron, solamente inserte cuando detecta que
> dicho dato no está en la tabla donde inserta.
>
> Eso es muy facil de hacer usando SELECT-EXISTS (y varias otras formas) sin
> tener que andar recorriendo fila por fila.
>
> Pienselo como ejercicio de fin de semana :-)
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Roberto" wrote:
>
> > Hola amigos,
> >
> > mi consulta es la siguiente hay alguna forma o manera de que pueda recorrer
> > una tabla desde un DTS en SQL Server 2000, se me habia ocurrido hacer un SP
> > pero tampoco se como llamarlo desde un DTS, y lo malo es que tiene que ser
> > desde un DTS y no desde un SP.
> >
> > el requerimiento es que me mandan cada mes un archivo txt, con registros de
> > personas y eso pasarlo a SQL Sever 2000, hasta todo bien, pero al siguiente
> > mes mandaran la misma lista pero con mas usuarios... entonces si hoy tenia
> > 100 y el mes que viene mandan 20 registros mas el archivo vendria con los 100
> > que ya tengo más los 20 más y me duplicaria los datos...
> >
> > por favor
> >
> > Help Me.
> >
> > atte.
> >
> > Roberto
Respuesta Responder a este mensaje
#3 Maxi
17/08/2007 - 14:26 | Informe spam
Hola, con el permiso de Gux, usted tiene logica en ese proceso? porque esta
usando VBscript? yo en estos casos lo que hago es pasar primero el archivo a
una tabla intermedia y luego si necesito logica los paso de esa tabla a la
final. Seria bueno conocer mas detalles de que esta usted realizando


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Roberto" escribió en el mensaje
news:
pero no hay manera de ejecutar un procedimiento almacenado desde vbscript
dentro del DTS... es muy buena tu respuesta pero esas son sentencias SQL y
dentro del DTS al cargar ocupo vbscript o javascript... eso me complica...
si puedes ser un poquito más especifico seria genial...

gracias de todos modos

"Gustavo Larriera (MVP)" wrote:

En mi opinión es mucho más simple que usted, cando llega el momento de
insertar los datos que le llegaron, solamente inserte cuando detecta que
dicho dato no está en la tabla donde inserta.

Eso es muy facil de hacer usando SELECT-EXISTS (y varias otras formas)
sin
tener que andar recorriendo fila por fila.

Pienselo como ejercicio de fin de semana :-)

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Roberto" wrote:

> Hola amigos,
>
> mi consulta es la siguiente hay alguna forma o manera de que pueda
> recorrer
> una tabla desde un DTS en SQL Server 2000, se me habia ocurrido hacer
> un SP
> pero tampoco se como llamarlo desde un DTS, y lo malo es que tiene que
> ser
> desde un DTS y no desde un SP.
>
> el requerimiento es que me mandan cada mes un archivo txt, con
> registros de
> personas y eso pasarlo a SQL Sever 2000, hasta todo bien, pero al
> siguiente
> mes mandaran la misma lista pero con mas usuarios... entonces si hoy
> tenia
> 100 y el mes que viene mandan 20 registros mas el archivo vendria con
> los 100
> que ya tengo más los 20 más y me duplicaria los datos...
>
> por favor
>
> Help Me.
>
> atte.
>
> Roberto
Respuesta Responder a este mensaje
#4 Roberto
17/08/2007 - 16:40 | Informe spam
gracias por la opcion es lo que al final decidi hacer...
era lo mas logico y facil de hacer... aunque tuve que hacer un cursor y hay
ejecutar
la carga... muchas gracias este foro es muy completo tres soluciones a un
problema gracias a todos...

saludos

Roberto

"Maxi" wrote:

Hola, con el permiso de Gux, usted tiene logica en ese proceso? porque esta
usando VBscript? yo en estos casos lo que hago es pasar primero el archivo a
una tabla intermedia y luego si necesito logica los paso de esa tabla a la
final. Seria bueno conocer mas detalles de que esta usted realizando


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Roberto" escribió en el mensaje
news:
> pero no hay manera de ejecutar un procedimiento almacenado desde vbscript
> dentro del DTS... es muy buena tu respuesta pero esas son sentencias SQL y
> dentro del DTS al cargar ocupo vbscript o javascript... eso me complica...
> si puedes ser un poquito más especifico seria genial...
>
> gracias de todos modos
>
> "Gustavo Larriera (MVP)" wrote:
>
>> En mi opinión es mucho más simple que usted, cando llega el momento de
>> insertar los datos que le llegaron, solamente inserte cuando detecta que
>> dicho dato no está en la tabla donde inserta.
>>
>> Eso es muy facil de hacer usando SELECT-EXISTS (y varias otras formas)
>> sin
>> tener que andar recorriendo fila por fila.
>>
>> Pienselo como ejercicio de fin de semana :-)
>>
>> Gustavo Larriera, Microsoft MVP
>> https://mvp.support.microsoft.com/p...o.Larriera
>> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>>
>>
>>
>> "Roberto" wrote:
>>
>> > Hola amigos,
>> >
>> > mi consulta es la siguiente hay alguna forma o manera de que pueda
>> > recorrer
>> > una tabla desde un DTS en SQL Server 2000, se me habia ocurrido hacer
>> > un SP
>> > pero tampoco se como llamarlo desde un DTS, y lo malo es que tiene que
>> > ser
>> > desde un DTS y no desde un SP.
>> >
>> > el requerimiento es que me mandan cada mes un archivo txt, con
>> > registros de
>> > personas y eso pasarlo a SQL Sever 2000, hasta todo bien, pero al
>> > siguiente
>> > mes mandaran la misma lista pero con mas usuarios... entonces si hoy
>> > tenia
>> > 100 y el mes que viene mandan 20 registros mas el archivo vendria con
>> > los 100
>> > que ya tengo más los 20 más y me duplicaria los datos...
>> >
>> > por favor
>> >
>> > Help Me.
>> >
>> > atte.
>> >
>> > Roberto



Respuesta Responder a este mensaje
#5 SYoung
17/08/2007 - 21:12 | Informe spam
Roberto,

Te explico otra manera de hacerlo y te puedo enviar un archivo DTS con el
código si me envías tu dirección de correo electrónico.

1. Abres una instancia del Analizador de Consultas (Query Analyzer) y creas
una copia exacta de la tabla que contiene los records que añades todos los
meses. Esta tabla la salvas bajo el nombre ##ElNombreDeTuTabla. No cierres
esta ventana ni el Analizador de Consultas ya que vas a necesitar esta tabla
global temporal en tu paquete DTS. Este paso lo necesitas solamente cuando
estas desarrollando tu archivo DTS.

2. Abres tu paquete DTS y añades una conección de servidor SQL y la
configuras de la siguiente manera:
New connection: tempdb
Data source: Microsoft OLE DB Provider for SQL Server
Server: local
Use Windows Authentication
Database: tempdb

3. Ahora añades un SQL "task" al paquete DTS y lo configuras de la siguiente
manera:
Description: Crear tabla global temporal
Existing connection: tempdb
Command time-out: 0
SQL statement: (el código que tienes en Analizador de Consultas)

3. Ahora añades una conección para el archivo de texto que recibes todos los
meses y lo configuras de la misma manera que lo tienes en este momento. El
mío esta configurado de esta manera:
New connection: Archivo Fuente
Data source: Text File (Source)
File name: AddressType.csv

4. Ahora añades otra conección de servidor SQL y lo configuras de la
siguiente manera
New connection: AdventureWorks
Data source: Microsoft OLE DB Provider for SQL Server
Server: local
Use Windows Authentication
Database: AdventureWorks

5. Añades un SQL task y escribes una consulta T-SQL la cual contiene un LEFT
JOIN. Los records que estas buscando y vas a insertar tendrán el valor NULL.


Código de paso 1
USE AdventureWorks
GO

SET NOCOUNT ON

CREATE TABLE dbo.SampleTable (
SampleID int IDENTITY(1,1),
[Name] nvarchar(50),
ModifiedDate dateTime);

CREATE TABLE dbo.##SampleTable (
SampleID int,
[Name] nvarchar(50),
ModifiedDate dateTime);

SELECT *
FROM dbo.SampleTable



Código de paso 5
INSERT dbo.SampleTable (Name, ModifiedDate)
SELECT A.Name,
A.ModifiedDate
FROM dbo.##SampleTable A
LEFT JOIN dbo.SampleTable B ON A.Name = B.Name
WHERE B.Name IS NULL;
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida