I am a big fan of loading data first into staging tables and then doing the type conversions in the database.
That is, create a staging table that has all the same fields, but defined as varchar(255)
or nvarchar(255)
(depending on contents of the csv file).
This should load correctly, with no type conversion errors.
Then do something like:
insert into tbl_HHDataImport(Read_Date, DIP1, . . . )
select now(), cast(DIP1 as float), . . .
from tbl_HHDataImport_staging;
When you have a conversion problem, you will readily be able to determine it. My guess is that the code should be like:
insert into tbl_HHDataImport(Read_Date, DIP1, . . . )
select now(),
(case when DIP1 <> 'NULL' then cast(DIP1 as float) end), . . .
from tbl_HHDataImport_staging;