Importar datos a una tabla en SQL 2000 desde un txt

24/11/2006 - 02:02 por Fabian | Informe spam
Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave y no
se repiten lo datos. Quiero poder importar los datos de un txt en donde
puede haber "nombres" que ya estan cargados en la tabla. Como puedo hacerlo
ya que al intentarlo con importar datos desde al adm coorporativo, los va
incorporando pero cuando se repite algun dato, da error: "no se puede
ingresar una clave duplicada".
Si le quito la clave, me los importará pero habra repetidos y cuando quiera
ponerle la clave a ese campo tambien dará error...
Pienso que hay alguna forma desde sql sin que tenga que hacer algun programa
en VB que elimine los repetidos no?
Desde ya muchas gracias.
Fabian

Preguntas similare

Leer las respuestas

#1 Monica Rivera
24/11/2006 - 07:43 | Informe spam
Puedes importar el txt a una tabla temporal 'temp' y luego insertar los datos
a la tabla (digamos que la tabla se llama 'nombres' con un campo 'nombre'),
asi:

insert into nombres (nombre)
select a.nombre from
(select distinct nombre from temp) t
left join nombres n on t.nombre=n.nombre
where n.nombre is null

Tambien puedes evitar importar primero la tabla a 'temp' y acceder el txt
directamente usando OPENDATASOURCE.

"Fabian" wrote:

Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave y no
se repiten lo datos. Quiero poder importar los datos de un txt en donde
puede haber "nombres" que ya estan cargados en la tabla. Como puedo hacerlo
ya que al intentarlo con importar datos desde al adm coorporativo, los va
incorporando pero cuando se repite algun dato, da error: "no se puede
ingresar una clave duplicada".
Si le quito la clave, me los importará pero habra repetidos y cuando quiera
ponerle la clave a ese campo tambien dará error...
Pienso que hay alguna forma desde sql sin que tenga que hacer algun programa
en VB que elimine los repetidos no?
Desde ya muchas gracias.
Fabian



Respuesta Responder a este mensaje
#2 Maxi
24/11/2006 - 13:11 | Informe spam
Hola, yo no recomendaria el uso de Opendatasource, si le recomendaria el uso
de de BCP para este tipo de operacion


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Monica Rivera" escribió en el
mensaje news:
Puedes importar el txt a una tabla temporal 'temp' y luego insertar los
datos
a la tabla (digamos que la tabla se llama 'nombres' con un campo
'nombre'),
asi:

insert into nombres (nombre)
select a.nombre from
(select distinct nombre from temp) t
left join nombres n on t.nombre=n.nombre
where n.nombre is null

Tambien puedes evitar importar primero la tabla a 'temp' y acceder el txt
directamente usando OPENDATASOURCE.

"Fabian" wrote:

Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave y
no
se repiten lo datos. Quiero poder importar los datos de un txt en donde
puede haber "nombres" que ya estan cargados en la tabla. Como puedo
hacerlo
ya que al intentarlo con importar datos desde al adm coorporativo, los va
incorporando pero cuando se repite algun dato, da error: "no se puede
ingresar una clave duplicada".
Si le quito la clave, me los importará pero habra repetidos y cuando
quiera
ponerle la clave a ese campo tambien dará error...
Pienso que hay alguna forma desde sql sin que tenga que hacer algun
programa
en VB que elimine los repetidos no?
Desde ya muchas gracias.
Fabian



Respuesta Responder a este mensaje
#3 Monica Rivera
25/11/2006 - 02:42 | Informe spam
De acuerdo. Puede usar BCP para importar los datos a una tabla y hacer el
join a esa tabla. Mi sugerencia de usar Opendatasource seria en el caso de
que prefiera hacer el join directamente al txt file.


"Maxi" wrote:

Hola, yo no recomendaria el uso de Opendatasource, si le recomendaria el uso
de de BCP para este tipo de operacion


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Monica Rivera" escribió en el
mensaje news:
> Puedes importar el txt a una tabla temporal 'temp' y luego insertar los
> datos
> a la tabla (digamos que la tabla se llama 'nombres' con un campo
> 'nombre'),
> asi:
>
> insert into nombres (nombre)
> select a.nombre from
> (select distinct nombre from temp) t
> left join nombres n on t.nombre=n.nombre
> where n.nombre is null
>
> Tambien puedes evitar importar primero la tabla a 'temp' y acceder el txt
> directamente usando OPENDATASOURCE.
>
> "Fabian" wrote:
>
>> Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave y
>> no
>> se repiten lo datos. Quiero poder importar los datos de un txt en donde
>> puede haber "nombres" que ya estan cargados en la tabla. Como puedo
>> hacerlo
>> ya que al intentarlo con importar datos desde al adm coorporativo, los va
>> incorporando pero cuando se repite algun dato, da error: "no se puede
>> ingresar una clave duplicada".
>> Si le quito la clave, me los importará pero habra repetidos y cuando
>> quiera
>> ponerle la clave a ese campo tambien dará error...
>> Pienso que hay alguna forma desde sql sin que tenga que hacer algun
>> programa
>> en VB que elimine los repetidos no?
>> Desde ya muchas gracias.
>> Fabian
>>
>>
>>



Respuesta Responder a este mensaje
#4 Simon Cascante
27/11/2006 - 15:09 | Informe spam
Concuerdo con Monica en que utilices una tabla temporal, ya que te
permitirá mayor control sobre los registros que se van ingresar a la
tabla "nombres".

Lo que si debes de tener en cuenta, es que deberías de borrar la tabla
"temp" antes de cargarla, para que no cresca con el tiempo y su uso sea
el más óptimo.

Otra consideración, es que si el proceso de carga lo debes de hacer
automático, utilices el 'insert', que muestra Monica, dentro de un
Stored Procedure.

Saludos!

Simón Cascante Chaves
Consultor de Inteligencia de Negocios

Monica Rivera ha escrito:

De acuerdo. Puede usar BCP para importar los datos a una tabla y hacer el
join a esa tabla. Mi sugerencia de usar Opendatasource seria en el caso de
que prefiera hacer el join directamente al txt file.


"Maxi" wrote:

> Hola, yo no recomendaria el uso de Opendatasource, si le recomendaria el uso
> de de BCP para este tipo de operacion
>
>
> Salu2
>
> Microsoft MVP SQL Server
> Culminis Speaker
> INETA Speaker
>
> "Monica Rivera" escribió en el
> mensaje news:
> > Puedes importar el txt a una tabla temporal 'temp' y luego insertar los
> > datos
> > a la tabla (digamos que la tabla se llama 'nombres' con un campo
> > 'nombre'),
> > asi:
> >
> > insert into nombres (nombre)
> > select a.nombre from
> > (select distinct nombre from temp) t
> > left join nombres n on t.nombre=n.nombre
> > where n.nombre is null
> >
> > Tambien puedes evitar importar primero la tabla a 'temp' y acceder el txt
> > directamente usando OPENDATASOURCE.
> >
> > "Fabian" wrote:
> >
> >> Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave y
> >> no
> >> se repiten lo datos. Quiero poder importar los datos de un txt en donde
> >> puede haber "nombres" que ya estan cargados en la tabla. Como puedo
> >> hacerlo
> >> ya que al intentarlo con importar datos desde al adm coorporativo, los va
> >> incorporando pero cuando se repite algun dato, da error: "no se puede
> >> ingresar una clave duplicada".
> >> Si le quito la clave, me los importará pero habra repetidos y cuando
> >> quiera
> >> ponerle la clave a ese campo tambien dará error...
> >> Pienso que hay alguna forma desde sql sin que tenga que hacer algun
> >> programa
> >> en VB que elimine los repetidos no?
> >> Desde ya muchas gracias.
> >> Fabian
> >>
> >>
> >>
>
>
>
Respuesta Responder a este mensaje
#5 Maxi
27/11/2006 - 15:22 | Informe spam
ok, pero ojo con el opendatasource, por ej en 2005 esta deshabilitado y hay
que habilitarlo ya que es un lugar donde podrias tener problemas de
seguridad


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Monica Rivera" escribió en el
mensaje news:
De acuerdo. Puede usar BCP para importar los datos a una tabla y hacer el
join a esa tabla. Mi sugerencia de usar Opendatasource seria en el caso de
que prefiera hacer el join directamente al txt file.


"Maxi" wrote:

Hola, yo no recomendaria el uso de Opendatasource, si le recomendaria el
uso
de de BCP para este tipo de operacion


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Monica Rivera" escribió en el
mensaje news:
> Puedes importar el txt a una tabla temporal 'temp' y luego insertar los
> datos
> a la tabla (digamos que la tabla se llama 'nombres' con un campo
> 'nombre'),
> asi:
>
> insert into nombres (nombre)
> select a.nombre from
> (select distinct nombre from temp) t
> left join nombres n on t.nombre=n.nombre
> where n.nombre is null
>
> Tambien puedes evitar importar primero la tabla a 'temp' y acceder el
> txt
> directamente usando OPENDATASOURCE.
>
> "Fabian" wrote:
>
>> Hola gente, tengo una tabla cuyo unico campo ej: "nombre" que es clave
>> y
>> no
>> se repiten lo datos. Quiero poder importar los datos de un txt en
>> donde
>> puede haber "nombres" que ya estan cargados en la tabla. Como puedo
>> hacerlo
>> ya que al intentarlo con importar datos desde al adm coorporativo, los
>> va
>> incorporando pero cuando se repite algun dato, da error: "no se puede
>> ingresar una clave duplicada".
>> Si le quito la clave, me los importará pero habra repetidos y cuando
>> quiera
>> ponerle la clave a ese campo tambien dará error...
>> Pienso que hay alguna forma desde sql sin que tenga que hacer algun
>> programa
>> en VB que elimine los repetidos no?
>> Desde ya muchas gracias.
>> Fabian
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida