In QGIS the attribute table of an imported CSV has some field headers with more than 9 digits. In a derived shapefile, field headers, where source header is more than 9 digits, get truncated. Because the headers are different when the source is updated the fields in the shapefile with truncated headers are not populated (they are null). Is there a recommended way to deal with this?
Even though you did not tag GRASS in your question, I would point out that the module for importing a csv file to GRASS allows for defining new column names. So you could import the CSV, changing the column names, then export to shape.
Suppose the file data.csv looks something like:
long_column_1,long_column_2,another_long_column 1,"text",345.0 2,"more text",43.2
Then in GRASS:
v.in.ascii input=data.csv output=data columns="id integer, name text, val double" separator=comma v.out.ogr input=data output=data.shp