0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Q11Q CSV Format v1.0 📄|自己記述型CSV構文仕様書(QSv1)

Last updated at Posted at 2025-05-22

当方でデータベースを取り扱うときに蓄積されたノウハウを構造化CSV "Q11Q CSV Format v1.0"(以下QSv1)として提案する。これは、従来のCSVの3行を追加し、データ型・列番号・列名を明示的に定義し、可搬性・自動変換性・エラー解析性を飛躍的に向上させる自己記述型フォーマットである。


0. 基本仕様

  • 文字コード:UTF-8(BOMなし)を推奨
  • 区切り文字(Delimiter):TAB(\\t)を推奨
    • カンマ(,) は金額や小数点と衝突するため避けること
  • 行区切り:CR+LF(Windows標準)またはLF(UNIX互換)両対応
  • 可変長を想定している

1. 構造定義(標準構文)

※本来はタブ区切りを推奨するが、説明のため、コンマ区切りとしている。

0,1,2,3
TEXT(29),TEXT(3),DATE,CURRENCY
氏名,年齢,生年月日,給与
山田太郎,30,1990/01/01,500000
佐藤花子,27,1995/12/25,420000

各行の意味:

行番号 内容 説明
1行目 列番号 0起算の固定インデックス、列順を保証
2行目 データ型 明示型(TEXT(N), DATE, NUMERIC等)
3行目 列名 フィールド名、予約語や重複も許容
4行目〜 データ本体 実データ、型定義に従って処理される

最初にデータ型が定義されているので、各データにはダブルクォーテーションは必要ない。

2. データ型定義一覧(標準推奨)

型名 意味 備考
TEXT(N) 文字列(最大N文字) Access, SQL用に直接変換可
DATE 日付型(YYYY-MM-DD) ISO形式推奨
CURRENCY 金額型(整数) AccessではCurrency型に変換
NUMERIC(P,S) 固定精度数(P桁, S小数) adNumeric型やSQL Decimal変換可
BOOLEAN 真偽(-1/0またはTrue/False) 必要時に解釈
DOUBLE 倍精度浮動小数点型 科学技術・統計処理に用いる
SINGLE 単精度浮動小数点型 金利等の表示使用される

3. Q11Q式の技術的利点(構造別)

■ 型安全性

  • 値を見て型を推定しない(例:"0" → True誤解釈を防止)
  • TEXT行があるため、値にクォーテーションが不要
  • タブ区切りにした場合、数字はコンマ付で表示可能

■ エラー特定性

  • 列名が予約語・Nullでも処理可能
  • "列3番の値 'abc' を DATE に変換できない" などの特定が明確

■ 処理汎用性

  • skiprows=2 でPandasなどに直接流し込める
  • 列番号で処理できるため、列名の揺らぎに強い

■ 可搬性・拡張性

  • Excel, Access, PostgreSQL, SQLite 等への移行が容易
  • JSON Schema等不要。CSV単体で完結

4. 拡張運用(推奨)

  • ファイル先頭に以下のコメント行を追加:
    # Q11Q CSV Format v1.0
  • 型行に @INFER を使うことで、スキーマ自動生成用マーカーとすることも可能(ツール連携時)

5. 利用例(SQL DDL生成)

上記CSVから以下のSQLが自動生成可能:

CREATE TABLE 顧客データ (
    氏名 VARCHAR(29),
    年齢 VARCHAR(3),
    生年月日 DATE,
    給与 MONEY
);

6. 実務補足(メタ情報記述指針)

  • 型が不明な場合:元のDB型名をそのまま2行目に記載しても良い(例:VARCHAR2, nvarchar 等)
  • 単位の明示:金額・体積・重さなどは、列名に (円), (kg) のように単位を含めることを推奨
  • **0埋め:**パディングが望ましいときは要件に定義すること
  • **郵便番号型:**こうした出力書式の指定が必要な場合は要件を定義する事。郵便番号の他、電話番号等が考えられる。
  • 緯度・経度:方位(N/S/E/W)や表記形式(度分秒 vs 十進数)を列名または型に含めること

7. 結論

Q11Q式CSV(SFv1)は、まだ改善の余地があると思われるものの、構造と意味を明示的に含んだ自己記述型CSVであり、従来の曖昧なCSVフォーマットに代わる実用的かつ極めて堅牢な構造定義方式である。また、データベースの構造についてもCSVを観るだけで理解が可能であり、元のデータベースとデータ型のVariantだけ要件を定義すればよく、マニュアルの記載も効率的となる。

AI処理・ETL処理・Access変換・Python処理など、全領域で構文崩壊を未然に防ぐための基本構造として推奨される。


📩 SFv1へのご意見・導入報告フォーム(匿名・自由記述)

Q11Q CSV Format v1.0(QSv1)を導入された方、あるいは仕様をご覧になった方からのご意見・改善提案・活用事例などを広く募集します。Qiitaのコメント欄又は以下のフォームにお寄せください。

  • 匿名可メールアドレス不要
  • 1分程度で送信可能
  • 返信を希望される方のみ連絡先記入欄が表示されます

📄 フォームはこちらから

👉 https://forms.gle/XF13ZrKidmPMNSCB8

みなさまからのフィードバックは、今後のSFv1仕様の進化・拡張・スクリプト提供の参考にさせていただきます。

🔖 Qiita記事アーカイブリンク
🪪 概要記事(第1回)
https://qiita.com/Q11Q/items/cc504d515a5592e605e3

📜 仕様本文(第2回)
https://qiita.com/Q11Q/items/c79321a8ab9d3b0a560a
from the QSv1 team

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?