MySQL specify default value when data has incorrect values
When you need to 'cleanse' the incoming data, there are two techniques to consider.  Suppose the column foo needs to be -1 to represent "NA":

Using @variables...

LOAD into and @variable, then use SET to manipulate the value while storing it.  There are examples in the docs. In your case you might use something like SET foo := IF(@foo = 'NA', -1, @foo) inside the LOAD DATA statement.

Using a temp table...

Instead of LOADing directly into the target table, load into a separate table (possible TEMPORARY).  Then have a few SQL statements to manipulate the data in that table before copying to the "real" table.  In your case:  UPDATE tmp SET foo = -1 WHERE foo = 'NA';.  Then INSERT INTO real SELECT * FROM tmp;.  Note foo would be VARCHAR in tmp in spite of being INT in real.

The temp table approach can handle more complex transformations.