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

#6 Fabian
29/11/2006 - 17:18 | Informe spam
Hola y gracias a todos por la respuesta.
Estuve probando lo de:
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
y lo que me pasa es que en un momento me dice que no puede ingresar un campo
null...
Lo que detecté es que en uno de los registros había solo 1 caracter de
control, lo quite y sigue igual, por lo que voy a revisar cada uno de los
txt que componian ese archivo de nombre (estaba compuesto por 5 o 6 txt) por
ahi en alguno otro hay null.
Lo de "where n.nombre is null" al final esta ok no ? es para el left join..
Es que casi nunca trabaje con el left join... Disculpen... :-)
Gracias nuevamente
Fabian
"Maxi" escribió en el mensaje
news:Op9q2%
Mostrar la cita
#7 Simon Cascante
07/12/2006 - 15:16 | Informe spam
Lo que pasa con la consulta, es que en el WHERE estas usando la tabla
que no es, debes de usar la tabla principal, no la tabla del LEFT JOIN,
de la siguiente manera:

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

Como ves, lo único que cambié en el WHERE fue, en lugar de usar
'n.nombre' usé 't.nombre'.

Otra manera de validar que los registros que estas ingresando a la
tabla, no existan, es la siguiente:

insert into nombres (
nombre)
select t.nombre
from (select distinct
nombre
from temp) t
where not exists (select 'X'
from nombres
where nombre = t.nombre)

Sinceramente, no se cual de las dos formas es más eficiente, pero a mi
humilde opinión, es más sencillo de leer la segunda.

Espero te sirva de ayuda.

Saludos

Simon Cascante
Consultor de Inteligencia de Negocios

Fabian ha escrito:

Mostrar la cita
Ads by Google
Search Busqueda sugerida