10

何万行ものデータを分析する必要があります。データはテキスト ファイルからインポートされます。データの各行には 8 つの変数があります。現在、クラスを使用してデータ構造を定義しています。テキスト ファイルを読みながら、各行オブジェクトを一般的なリスト List に格納します。

テキストの各行のデータを分析し、現在一般的なリスト (リスト) にも保存している定義用語に関連付ける必要があるため、リレーショナル データベース (SQL) の使用に切り替える必要があるかどうか疑問に思っています。

目標は、定義を使用して大量のデータを変換することです。定義されたデータをフィルタリング可能、検索可能などにしたいのです。データベースを使用することは、考えれば考えるほど理にかなっていますが、変更を加える前に経験豊富な開発者に確認したいと思います (私は構造体と構造体を使用していました)。最初は配列リスト)。

私が考えることができる唯一の欠点は、ユーザーが翻訳して表示した後、データを保持する必要がないことです。データを永続的に保存する必要はないため、データベースを使用するのは少しやり過ぎかもしれません。

4

7 に答える 7

3

データベースに行くことは絶対に必要というわけではありません。データの実際のサイズと実行する必要があるプロセスによって異なります。カスタム クラスを使用してデータを List に読み込む場合、Linq を使用してクエリとフィルター処理を行ってみませんか? 何かのようなもの:

var query = from foo in List<Foo>
            where foo.Prop = criteriaVar
            select foo;

問題は、データが大きすぎて快適にメモリにロードできないかどうかです。その場合、はい、データベースははるかに単純になります。

于 2010-02-28T01:28:39.197 に答える
3

これは大量のデータではありません。分析にデータベースを使用する理由がわかりません。

C# には、LINQ というクエリ言語が組み込まれています。元の投稿者は現在、オブジェクトのリストを使用しているため、何もする必要はありません。この状況でのデータベースは、光よりもはるかに多くの熱を加えるように私には思えます。

于 2010-02-28T03:01:37.857 に答える
1

あなたが欲しいのはデータベースのようです。Sqliteはメモリ内データベースをサポートしています (ファイル名として「:memory:」を使用します)。他の人もインメモリモードを持っているのではないかと思います。

于 2010-02-28T01:11:39.183 に答える
1

以前の会社で働いていたときに、あなたが直面したのと同じ問題に直面していました.問題は、バーコードで生成されたファイルの多くに対する具体的で適切な解決策を探していたということです.バーコードは、何千ものレコードを含むテキストファイルを生成します.最初は、データの操作と表示は非常に困難でした。プログラムしたレコードに基づいて、ファイルを読み取り、データをデータ テーブルにロードして保存できるクラスを作成します。データベース。使用したデータベースはSQL Server 2005でした。保存したデータを簡単に管理し、好きなように表示することができました。要点は、ファイルからデータを読み込んでデータベースに保存することです。そのため、好きなように操作して提示するための多くのオプションがあります。

于 2010-02-28T02:39:31.457 に答える
0

あなたの説明から、Linuxコマンドラインツールはあなたのデータを非常にうまく処理できると思います. データベースを使用すると、作業が不必要に複雑になる場合があります。Windows を使用している場合、これらのツールはさまざまな方法で利用できます。私はcygwinをお勧めします。次のツールがタスクをカバーする場合があります: sort、grep、cut、awk、sed、join、paste。

これらの unix/linux コマンド ライン ツールは、Windows ユーザーには恐ろしく見えるかもしれませんが、愛される理由があります。私がそれらを愛する理由は次のとおりです。

  1. それらはスキルの蓄積を可能にします - 部分的なツールに関する知識は、将来のさまざまなタスクに役立ちます。
  2. これにより、努力が蓄積されます。タスクを完了するために使用したコマンド ライン (またはスクリプト) は、人間の介入なしで、さまざまなデータを使用して必要な回数だけ繰り返すことができます。
  3. それらは通常、あなたが作成できる同じツールよりも優れています。信じられない場合は、テラバイト ファイルのバージョンで並べ替えを実行してみてください。
于 2010-03-11T00:45:45.823 に答える
0

アクセスの使用を気にしない場合は、次のことができます。

空白の Access データベースをリソースとしてアタッチします。必要に応じて、データベースをファイルに書き出します。データの列を処理する CREATE TABLE ステートメントを実行します データを新しいテーブルにインポートします SQL を使用して計算を実行します OnClose、そのアクセス データベースを削除します。

Resourcer のようなプログラムを使用して、db を resx ファイルにロードできます。

  ResourceManager res = new ResourceManager( "MyProject.blank_db", this.GetType().Assembly );
  byte[] b = (byte[])res.GetObject( "access.blank" );

次に、次のコードを使用して、リソースをプロジェクトから引き出します。バイト配列を取得し、一時的なファイル名で一時的な場所に保存します

「MyProject.blank_db」はリソースファイルの場所と名前です 「access.blank」は保存するリソースに与えられたタブです

于 2010-02-28T01:18:51.093 に答える