私のCSVファイルに次のものが含まれているとしましょう。
"item_name","price","description"
mobile,500$,It has many features (e.g., camera, big display, etc)
mysqlコマンドを使用してmysqlデータベースにこのcsvデータファイルをロードしたいと思います。
load data local infile 'file.csv' into table table
fields terminated by ','
lines terminated by '\n'
(column1, column2, column3,...)
mysqlとオプションを使用して"
各値を囲むこともできます。enclosed by '"'
しかし、すべての値を含めることは私にとって負担になります。
description
このタイプのcsv(すべての列ではなく1つの列を含む)を読み取ることができるソリューションがある場合は、値のみを含めることができます"
。
答え1
フィールド区切り文字をコンマからファイルにないものに変更します。 CSVファイルが生成されるターゲットを制御できる場合、それは難しくありません。
そしてcsvkit
、最後のフィールドが正しく引用されたら、これを行うことができます。
$ 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)
あるいは、そのエントリがない場合は、各行csvformat
の最初の2つのコンマが実際の区切り文字であると想定します。
$ sed -e 's/,/@/' -e 's/,/@/' file.csv
最後のフィールドを引用する必要はありません。
新しいファイルにリダイレクトしてから使用してください。
load data local infile 'newfile.csv' into table table
fields terminated by '@'
lines terminated by '\n'
(column1, column2, column3,...)
答え2
私はそれを呼ぶ複合地域私は個人的にエンコーディングを好みますbase64
。
$ echo "It has many features (e.g., camera, big display, etc)" | base64
SXQgaGFzIG1hbnkgZmVhdHVyZXMgKGUuZy4sIGNhbWVyYSwgYmlnIGRpc3BsYXksIGV0YykK
しかし、そうすれば確かに長所と短所があります。