1

私はデータベースを再設計していますが、現在使用されているアプローチの 1 つを置き換えたいと思っています。

非常に大量のデータが、さまざまな時点でフォーマットが定義されていない *.csv ファイルから読み込まれます。ボリュームはさまざまな顧客に関連しています

したがって、アプローチは、新しい顧客ごとにテーブルを作成し、常にロードし続けることです。問題は、顧客ごとに常に新しいテーブルが作成され、それらが一致せず、管理やクエリが難しいことです。

私はすでに、すべてのデータと、それらがどの顧客/テーブルからのものかを制御するいくつかの列を含むテーブルを作成することを考えていましたが、管理がさらに困難または遅くなる大きすぎるテーブルを作成する可能性があるとまだ考えています.サイズ。

非標準形式のファイルのロードに関して、私が見逃している可能性のある他のアプローチはありますか? 非規則的とは、各ファイルが異なる列 (数量と形式) を持つことができることを意味します。

4

1 に答える 1

2

これは、データベースを使用して* .csvファイルを管理するアプリケーションの1つですが、*。csvファイルはデータベースに入れません。写真データベースで似たようなことをしました。

基本的に、*。csvファイルを管理するためのテーブルが1つあります。

CSV Files
---------
File ID
Customer ID
Template location on disk
CSV file location on disk

ファイルIDは自動インクリメント整数です。顧客IDは、顧客テーブルを指す整数です。

ディスク上のテンプレートの場所は、ディスク上のテンプレートの場所を指す文字列です。テンプレートは、対応するCSVファイルの列を列順に一覧表示するフラットファイルです。テンプレートファイルの形式はユーザー次第ですが、CSVエンジンで処理する必要があります。このテンプレートは、列ヘッダーのないCSVファイル用に手動で作成され、列ヘッダーのあるCSVファイル用にプログラムで作成できます。

ディスク上のCSVファイルの場所は、ディスク上のCSVファイルの場所を指す文字列です。

このテーブルには、CSVファイルの受信タイムスタンプなどの他の重要な列を含めることができます。説明を簡単にするために、これらのフィールドは省略しました。

クエリするCSVファイルごとに、データベースからCSVファイルの行を読み取ります。次に、CSVエンジンは次のようになります。

  • テンプレートを読む
  • CSVファイルを処理する
  • 目的の結果を返すか、このテンプレートに目的の列が含まれていない場合はnullを返します。

データベースは、ディスク上のテンプレートファイルと*.csvファイルへのインデックスを維持します。CSVエンジンは、テンプレートファイルと* .csvファイルを処理し、必要な情報を返します。

于 2012-09-28T17:59:22.263 に答える