Pasar .TXT a tabla sql 7.0 con código

Necesito pasar un archivo de texto a una tabla (a) de sql 7.0 (sin ocupar el ayudante de transformación de datos) y cargar en otra tabla(B) todos los registros que "NO" cumplan con las restricciones de la tabla(a).
Se que bcp es la clave pero los ejemplos de la ayuda no funcionan.
Bcp deliver.. Codigo in promark.txt -m1 -t\t -r\n ... Error de sintax
Ademas nesecito saber como manejar errores para evitar que la transaccion falle y se detenga sòlo por que un registro no cumple con una restricciòn.
Si puedes ayudarme estaré muy agradecido

1 respuesta

Respuesta
1
Dame todos los detalles posibles de tu problema para poder escribir el código del Trigger y del SP que te hacen falta. Se amplio
Hola, pensemos en un Archivo.txt de tres campos
Un "Codigo"
Campo "Nombre"
Camnpo "Fecha".
Una Tabla "Deliver" con tres campos
"Codigo" Integer (Primary Key)
"Nombre" VarChar
"Fecha" SmallDatatime
La idea es que al cargar el archivo de texto en la tabla se cumpla la restricción de la clave primaria y que los tipo de datos sean los señalados en la tabla, hasta ahora con la instrucción Bulk Insert solo logre traspasar los datos con el tipo Char.
El otro problema es que no se como hacer para que un registro duplicado quede en otra tabla "tabla_duplicados".
(La tabla_duplicados no tiene restricciones)
El archivo original tiene 5.000 o más registros y posee más campos.
Muchas Gracias.
Daniel 1024
Primero, debo disculparme por haber demorado la respuesta, pero estuve realmente bastante ocupado:
Solución:
A la Tabla A en la que se realizaran inserciones le agregaremos el siguiente trigger
CREATE TRIGGER IUServiciosTrigger ON [dbo].[Tabla_A]
FOR INSERT, UPDATE
AS
declare @Codigo int
declare @nombre varchar(50)
declare @Fecha SmallDatetime
select @Codigo = Codigo, @nombre=nombre from Inserted
if (select count(*) from Tabla_B where Codigo = @codigo) = 0
begin
if @@ERROR<>0
insert
Tabla_B
(Código, Nombre, Fecha)
values (@Codigo,@nombre,@Fecha )
end
GO
Este Trigger, en caso de producirse un error por cualquier causa (violación de rstriccion de tabla por ejemplo)insertara el registro en la tabla B, funciona para inserciones y actualización. Funciona de lo mejor.
Agrega en un procedimiento almacenado el siguiente código
BULK INSERT Base_de_Datos.dbo.Tabla_A
from 'c:\nombre.txt'
With
(
Fieldterminator='*'
RowTerminator='*\n'
Fire_Triggers
)
Este código inserta en la tabla A el contenido del fichero de texto nombre.txt.
Cada campo se separa con * y la fila termina con \n.
Fire_Triggers garantiza que se ejecuten los triggers de la tabla A

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas