Altere o delimitador de campo de vírgulas para algo que não esteja presente no arquivo. Se você tiver controle sobre o que cria o arquivo CSV, isso não deve ser muito difícil.
Com csvkit
, isso pode ser feito se o último campo for devidamente citado:
$ cat file.csv
"item_name","price","description"
mobile,500$,"It has many features (e.g., camera, big display, etc)"
$ csvformat -D@ file.csv
item_name@price@description
mobile@500$@It has many features (e.g., camera, big display, etc)
Ou, sem csvformat
, assumindo que as duas primeiras vírgulas em cada linha são verdadeiros delimitadores:
$ sed -e 's/,/@/' -e 's/,/@/' file.csv
Isso não exige que o último campo seja citado.
Redirecione isso para um novo arquivo e use
load data local infile 'newfile.csv' into table table
fields terminated by '@'
lines terminated by '\n'
(column1, column2, column3,...)