カンマ区切り値(CSV)は、表形式のデータを格納するためのプレーンテキスト データ 形式で、レコードのフィールド(値)はカンマで区切られ、各レコードは1行(つまり改行で区切られた行)です。CSVは、データベースやスプレッドシートなど、一般的に表形式のデータを扱うソフトウェアでよく使用されます。[3] CSVを使用する利点としては、使いやすさと人間が読みやすいことが挙げられます。[4] CSVは区切り文字で区切られた値の一種です。CSVファイルは、CSV形式のデータを含むファイルです。
CSVは特定の文字エンコーディングに限定されません。[1] Unicode(UTF-8またはUTF-16)でもASCIIと同様に動作しますが、特定のプログラムでは制限がある場合があります。多くの独自データ形式とは異なり、CSVデータは通常、ある文字セットから別の文字セットへの単純な変換を経ることなく保存されます。ただし、CSVでは文字エンコーディングを指定する方法がないため、別途指定する必要があります。
CSV形式はパーソナルコンピュータの登場より10年以上も前に遡ります。OS /360のIBM Fortran(レベルH拡張)コンパイラは、1972年に値の間にカンマを挟むリスト指示型(「自由形式」)入出力をサポートしました。[5]リスト指示型入出力はFORTRAN 77で定義され、1978年に承認されました。リスト指示型入力では、カンマまたはスペースが区切り文字として使用されたため、引用符で囲まれていない文字列にはカンマやスペースを含めることができませんでした。[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]このフォーマットは、2005年の技術標準RFC 4180でより正式に規定されており、CSVフォーマットを体系化し、テキストベースのフィールドを処理するためのMIMEタイプを定義しています。その要件には以下が含まれます。
text/csv
CSV に関する一般的な課題は次のとおりです。
2011年、Open Knowledge Foundation (OKF) と様々なパートナーがデータプロトコルワーキンググループを設立し、後にFrictionless Data Initiativeへと発展しました。彼らがリリースした主要なフォーマットの一つがTabular Data Packageです。Tabular Data PackageはCSVをベースにしており、主要なデータ転送フォーマットとしてCSVを使用し、基本的な型とスキーマのメタデータを追加しました。(CSVには、文字列1と数字の1を区別するための型情報が欠けています。) [16] Frictionless Data Initiativeは、フィールドセパレーターや引用符のルールなど、CSVの異なる方言を記述するための標準的なCSV Dialect Description Formatも提供しています。[17]
2013年、W3Cの「CSV on the Web」ワーキンググループは、CSVまたは類似のフォーマットを使用するウェブアプリケーションの相互運用性を向上させる技術の仕様策定を開始しました。[18]ワーキンググループは2016年2月に作業を完了し、2016年3月に「表形式データ」のモデリング[13]と、メタデータとセマンティクスによるCSVの拡張に関する一連の文書とW3C勧告[19]を発表して正式に終了しました。CSVデータの整形式性は容易に確認できますが、妥当性と正規形式のテストは、より豊富な型とルールベースの検証を提供するXMLやSQLなどのより正確なデータ形式に比べて、あまり発達していません。[20]
CSVはデータ交換に広く利用されており、データ指向アプリケーションで広くサポートされています。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 * FROM articles) TO '/home/wikipedia/file.csv' (FORMAT csv)articles/home/wikipedia/file.csvCREATE FOREIGN TABLECREATE EXTENSION file_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プロセッサに精通しているユーザーにとって、これらは主要な新しい言語機能です。