CSVファイルの形式は、RFC4180を基に以下の仕様とします。
レコードについて
各レコードは改行「CRLF」で区切ります。(「CR」、「LF」のみの改行は動作保証しません。)
ファイル末尾には改行を指定してください。
レコード内の各フィールドはカンマ「,」で区切ります。(カンマはASCII(1byte文字))
aaa,bbb,ccc | → | aaa | bbb | ccc |
カンマが連続した場合、および、改行の前にカンマがある場合は、カンマの次に空データがあるものとします。
aaa,,ccc | → | aaa | ccc | |
aaa,bbb, | → | aaa | bbb |
ヘッダーは指定できません。
field1 | field2 | field 3 | ||
aaa,bbb,ccc | → | aaa | bbb | ccc |
ダブルクォーテーションについて
ダブルクォーテーションで囲む場合は、同じレコードのすべてのフィールドをダブルクォーテーションで囲みます。
"aaa","bbb","ccc" | → | aaa | bbb | ccc |
ダブルクォーテーション、カンマを含むフィールドは、ダブルクォーテーションで囲みます。
"aaa","bb,b","ccc" | → | aaa | bb,b | ccc |
ダブルクォーテーションで囲まれているフィールドでダブルクォーテーションを使用する場合は、ダブルクォーテーションでエスケープします。
"aaa","bb""b","ccc" | → | aaa | bb"b | ccc |
注意
以下の場合はエラーとなります。
区切り(カンマ)の前後に空白、タブなどがある。
空白、タブなどを入れた場合、それらも1文字として認識するため、パラメーターエラーの原因となります。
ダブルクォーテーションで囲まれているフィールドの前後に空白がある。
"zzz ", "yyy ", " xxx " |
フィールド数が異なる。
aaa,bbb aaa,bbb,ccc aaa,bbb,ccc,ddd |
ダブルクォーテーションで囲まれているフィールドと囲まれていないフィールドが混在する。
aaa,"bbb",ccc "xxx",yyy,"zzz" |
ダブルクォーテーションのエスケープが崩れている。
"aaa","bb"""b","ccc" |