カンマ区切り値( CSV ) は、レコードのフィールド(値)がカンマで区切られ、各レコードが 1 行 (つまり、改行で区切られている) である表形式データを格納するためのプレーンテキストデータ形式です。CSV は、データベースやスプレッドシートなど、表形式データを扱うソフトウェアで一般的に使用されています。[ 3 ] CSV を使用する利点として、使いやすさと人間が読みやすいことが挙げられます。[ 4 ] CSV は、区切り文字で区切られた値の形式です。CSVファイルは、CSV 形式のデータを含むファイルです。
CSVは特定の文字エンコーディングに限定されるものではありませんが[ 1 ] 、 UTF-8で使用すべきであり、実際によく使用されています。これは、文字エンコーディングを示す方法が提供されていないためです。
CSV形式はパーソナルコンピュータより10年以上前から存在していました。OS /360上のIBM Fortran(レベルH拡張)コンパイラは、1972年に値の間にカンマを含むリスト指向(「自由形式」)入出力をサポートしました。[ 5 ]リスト指向入出力は、1978年に承認されたFORTRAN 77で定義されました。リスト指向入力では区切り文字としてカンマまたはスペースが使用されたため、引用符で囲まれていない文字列にはカンマやスペースを含めることができませんでした。[ 6 ]
「カンマ区切り値」という用語と「CSV」という略語は1983年までに使用されていました。[ 7 ] SuperCalcスプレッドシートが同梱されていたOsborne Executiveコンピュータのマニュアルには、文字列にカンマを埋め込むことができるCSVの引用規則が記載されています。[ 8 ]
カンマ区切りの値リストは、固定列に揃えられたデータよりも入力しやすく(例えばパンチカードへの入力など)、値が本来の位置から1列ずれてパンチされた場合でも、誤った結果が生じる可能性が低い。
カンマ区切りファイルは、異なるアーキテクチャのマシン間でデータベース情報を交換するために使用されます。CSV ファイルのプレーンテキスト形式により、バイト順序やワードサイズなどの非互換性をほぼ回避できます。ファイルはほぼ人間が読める形式であるため、完全なドキュメントやコミュニケーションがない場合でも扱いやすくなります。[ 9 ]
主な標準化の取り組み、つまり「事実上の曖昧な定義」をより正確で法的な定義に変換する取り組みは、2005年にRFC 4180によって行われ、CSVがMIMEコンテンツタイプとして定義されました。[ 10 ]その後、2013年にRFC 4180のいくつかの欠点がW3C勧告によって対処されました。[ 11 ]
2014年にIETFは、CSVドキュメントへのURIフラグメントの適用について記述したRFC 7111を公開しました。RFC 7111は、位置インデックスを使用してCSVドキュメントから行、列、セル範囲を選択する方法を規定しています。[ 12 ]
2015年、 W3CはCSVを形式意味論で強化する試みとして、同年12月に勧告として始まったCSVメタデータ標準の勧告の最初の草案を公開した。 [ 13 ]
CSVは、1行に1レコード、各行にカンマで区切られた同じフィールドのシーケンスが含まれるプレーンテキストデータとして非公式に説明できます。 [ 1 ] [ 14 ] [ 15 ]簡単な例を挙げると次のようになります。
ID、名前、メールアドレス 1、ジョン、john.doe@example.com 2、ジェーン、janey72@test.org
このフォーマットは、CSVフォーマットをコード化し、テキストベースのフィールドを処理するためのMIMEタイプを定義する2005年の技術標準RFC 4180でより正式に記述されています。その要件には以下が含まれます。 text/csv
より複雑な例として、一部のフィールドが二重引用符で囲まれ、フィールドに特殊文字(二重引用符、行末文字、カンマ)が含まれている場合:
年式、メーカー、モデル、説明、価格 1997年式、フォード、E350、「エアコン、ABS、ムーンルーフ」、3000.00ドル 1999年式、シボレー「ベンチャー」「エクステンデッド・エディション」、4900.00 1999年、シボレー「ベンチャー」「エクステンデッド・エディション、ベリー・ラージ」「」「」「」「5000.00」 1996年式、ジープ、グランドチェロキー、「売却必須!」 エアコン、ムーンルーフ、フル装備」、4799.00
この例は、CSV ファイルを単純に行末記号で分割し、各行をカンマで区切るだけでは解析できないことを示しています。上記のデータを正しく解析すると、次の表のように表すことができます。
CSVに関する一般的な課題は以下のとおりです。
2011年、Open Knowledge Foundation (OKF) とさまざまなパートナーがデータプロトコルワーキンググループを設立し、後にFrictionless Dataイニシアチブへと発展しました。彼らがリリースした主要なフォーマットの1つがTabular Data Packageです。Tabular DataパッケージはCSVをベースにしており、CSVを主要なデータ転送フォーマットとして使用し、基本的な型とスキーマのメタデータを追加しました。(CSVには文字列1と数値1を区別するための型情報がありません。) [ 16 ] Frictionless Dataイニシアチブは、フィールド区切り文字や引用ルールなど、CSVのさまざまな方言を記述するための標準CSV Dialect Description Formatも提供しています。[ 17 ]
2013 年、W3C の「CSV on the Web」ワーキンググループは、CSV または類似の形式を使用する Web アプリケーションの相互運用性を高める技術の仕様策定を開始しました。[ 18 ]このワーキンググループは 2016 年 2 月に作業を完了し、2016 年 3 月に「表形式データ」[ 13 ]のモデリングと、メタデータとセマンティクスによる CSV の拡張に関する一連の文書と W3C 勧告[ 19 ]のリリースをもって正式に終了しました。CSV データの整形式性は容易にチェックできますが、より正確なデータ形式であるXMLやSQLと比較すると、妥当性と正規形式のテストはあまり開発されていません。これらの形式は、より豊富な型とルールベースの検証を提供します。[ 20 ]
CSV はデータ交換によく使用され、データ指向アプリケーションで広くサポートされています。互換性のないデータ(多くの場合、独自形式または文書化されていない形式) をネイティブに扱うプログラム間で表形式データを移動するためによく使用されます。 [ 1 ] [ 21 ] [ 22 ]一般的なシナリオは、データベースからスプレッドシートにデータを移動することですが、これらは通常、まったく異なる形式を使用します。ほとんどのデータベースシステムは CSV としてエクスポートでき、ほとんどのスプレッドシートプログラムは CSV 形式のデータをインポートでき、CSV を中間形式として利用します。主要なe コマースプラットフォームはすべて、データを CSV ファイルとしてエクスポートする機能をサポートしています。[ 23 ]
CSV はデータの保存にも使用されます。Pandas などの一般的なデータサイエンスツールには、長期保存のためにデータを CSV にエクスポートするオプションがあります。[ 24 ]データ保存における CSV の利点としては、CSV のシンプルさにより、他のデータ形式と比較して CSV ファイルの解析と作成が簡単に実装でき、高速であること、人間が読みやすいためデータの編集や修正が容易になること、[ 25 ]および高い圧縮性によりデータファイルが小さくなることなどが挙げられます。[ 26 ]一方、CSV はより複雑なデータ関係をサポートしておらず、null 値と空値の区別もないため、これらの機能が必要なアプリケーションでは他の形式が好まれます。
英国政府や欧州委員会などの200以上の地方、地域、国のデータポータルは、標準化されたデータカタログを含むCSVファイルを使用しています。[ 27 ]
一部のアプリケーションは、相互運用性を高めるためにデータ交換フォーマットとしてCSVを使用し、CSV形式でのエクスポートとインポートに対応しています。また、CSVを内部フォーマットとして使用するアプリケーションもあります。CSVは、ほぼすべての表計算ソフトとデータベース管理システムでサポートされています。
Apple Numbers、LibreOffice Calc、Apache OpenOffice Calcなどのスプレッドシートは、CSVファイルの読み込みをサポートしています。Microsoft ExcelもCSVの方言をサポートしていますが、他のスプレッドシートソフトウェアと比較すると制限があります(例:2019年現在) 。Excel は、一般的に使用されている UTF-8 文字エンコーディングで CSV ファイルをエクスポートすることはまだできず、区切り文字がカンマである必要もありません。LibreOffice Calc のCSV インポーターは、実際にはより汎用的な区切りテキスト インポーターであり、複数の区切り文字を同時にサポートし、フィールドのトリミングもサポートしています。
さまざまなリレーショナル データベースは、クエリ結果を CSV ファイルに保存することをサポートしています。PostgreSQLはCOPY、ファイルのデータの保存と読み込みの両方を可能にするコマンドを提供します。は、テーブルの内容をという名前のファイルに保存します。[ 28 ]標準 SQL を使用するリレーショナル データベースの中には、外部データ ラッパー(FDW) を提供するものがあります。たとえば、PostgreSQL は、 CSV の任意のバリアントを構成するための[ 29 ]および[ 30 ]コマンドを提供します。Apache Hiveのようなデータベースは、 CSV または.csv.gz を内部テーブル形式として表現するオプションを提供します。COPY(SELECT*FROMarticles)TO'/home/wikipedia/file.csv'(FORMATcsv)articles/home/wikipedia/file.csvCREATEFOREIGNTABLECREATEEXTENSIONfile_fdw
CSVを扱うプログラムには、CSVファイルの最大行数に制限がある場合があります。例としては、Microsoft Excel(1,048,576行)、Apple Numbers(1,000,000行)、Google Sheets(10,000,000セル)、OpenOfficeおよびLibreOffice(1,048,576行)などがあります。[ 31 ]
の FORTRAN IV G および H プロセッサに精通しているユーザーにとって、これらは主要な新しい言語機能です