This was thrown together, but should work if you replace the tablenames, columnnames and filenames with values that apply to your application BULK INSERT DBName.dbo.StagingTable -- StagingTable can be a copy of your destination table From 'C:\YourFile.txt' -- actual path to your file With ( FieldTerminator = ',', RowTerminator = '\n' -- for new line ) Alter Table StagingTable ADD SafeToTransfer BIT NOT NULL Default(1) -- Run some integrity checks prior to attempting to tranfer if ( select Count(*) From DBName.dbo.StagingTable Where IsNumeric( ColumnA )=0 ) >0 BEGIN Update DBName.dbo.StagingTable Set SafeToTransfer = 0 Where IsNumeric( ColumnA )=0 END if (select Count(*) From DBName.dbo.StagingTable Where isDate( ColumnB )=0 ) >0 BEGIN Update DBName.dbo.StagingTable Set SafeToTransfer = 0 Where isDate( ColumnB )=0 END if ( select Count(*) From DBName.dbo.StagingTable Where isNumeric( ColumnD )=0 ) >0 BEGIN Update DBName.dbo.StagingTable Set SafeToTransfer = 0 Where isNumeric( ColumnD )=0 END Insert Into DBName.dbo.DestinationTable ( ColumnA, -- an INT Column ColumnB, -- a datetime column ColumnC, -- a varchar(100) column ColumnD, -- a numeric(9,5) column ColumnE -- another varchar(100) column ) SELECT CAST( ColumnA as int), -- an INT Column CAST( ColumnB as datetime), -- a datetime column LEFT( ColumnC, 100), -- a varchar(100) column CONVERT( numeric(9,5), ColumnD), -- a numeric(9,5) column LEFT( ColumnE, 100) -- another varchar(100) column From DBName.dbo.StagingTable Where SafeToTransfer = 1 Alter Table StagingTable DROP COLUMN SafeToTransfer