If you're using a csv, then you can create a csvt file to go with it.
For example, if your csv is called file.csv then create a new text file called file.csvt
The csvt file only needs a single line with something like:
"String","Real","String","String","Integer",...
Where each column is the type found in the original csv. They just need to be surrounded by double quotes and separated by a comma.
There's some additional info at http://www.gdal.org/drv_csv.html where it also mentions you can specify width and scale of the Integer or Real types like:
From the site,
"Integer(5)","Real(10.7)","String(15)"
or starting with gdal 2.0 or greater
"Integer(Boolean)","Integer(Int16)" and "Real(Float32)"