2012-02-07 6 views
1

毎日新しいデータファイルを受け取ります。今は、データをインポートして必要な計算を実行するために、必要なすべてのテーブルを使用してデータベースを構築しています。データベースに日々のデータを追加する推奨方法

現在のテーブルに新しい日付のデータを追加するだけでいいですか?各ファイルには日付の列が含まれています。将来、特定の日のデータを分析する必要がある場合は、「WHERE」クエリを使用できます。それとも、毎日新しいテーブルを作成する必要がありますか?

私はデータベースデザイン(Excelから来たもの)が初めてです。私はこれにSQL Serverを使用します。

+0

これは非常に広い質問です。あなたが毎日少量のデータを取得しているなら、これはうまくいくはずです。ただし、取得するデータが多いほど、データベースに必要なスペースが増えます。容量計画を立て、データをロードする最良の方法を決定するためにDBAと座りたいと思うでしょう(おそらく、SSISを使った自動プロセス)。 –

+0

さて、私は約100万レコードを1日に受け取っています。 CSVデータファイルの「BULK INSERT」を使用すると、データベースが大きくなりすぎた場合に問題が発生しますか? – eek142

+1

1日あたり1万件のレコードが非常に高速に大規模な表に変換されます。テーブルの幅があまり広くない場合でも、データベース管理者と連絡してニーズを説明することを強くお勧めします。彼らは、適切なインデックスを作成し、ハードウェアが大量のデータを処理できることを保証するのに役立ちます。 –

答えて

2

、あなただけの1組のテーブルではなく、毎日新しいテーブルを作成する必要があるの。

あなたのデータベースに入ってくるデータの日付列の値を保存し、テーブルに「CreateDate」列を持ち、デフォルト値 'GetDate()'を使用して自動的に取得することをお勧めします行が挿入される現在の日付が設定されます。

行がインポートされたデータファイル名を格納する別の列を持つこともできますが、日付列の値と行が挿入された日付を既に格納している場合は、本当に必要です。

カスタムデータローダーアプリケーションを使用してこのタイプのアクティビティを実行していたとき、ソースの一意のキーの種類を含む成功/エラー/警告メッセージをログに記録するログファイルを作成すると便利でしたデータとターゲットデータベース - すなわち。 Excelファイルからデータベース列に移動する場合、Excelの行インデックスと挿入された行の主キーを格納できます。後で問題を追跡するのに役立ちます。

2

SSIS(SqlServer Integration Services)を参照してください。これは、ETLアクティビティを実行するためのSqlServerツールです。

+0

私はSSISのすべてですが、データの入手方法ではなく、データベースの設計方法に関する質問があると思います。 –

1
  1. はい、毎日のデータをテーブルに追加します。すべてのデータの1組の表。

  2. はい、日付の列を使用して、データがロードされた日を特定します。

  3. には、日付列とクロップ列を持つ別の表がある場合があります。ロード日時を格納する日付と、インポートしたファイルを格納するclob。受信されたデータの構造は同じであると仮定すると

+0

ありがとう、私はこれを調べると思います。 – eek142

1

あなたは、間違いなく1組のテーブルを持ち、データを毎日追加する必要があります。これを考えてみましょう。毎日新しいテーブルセットを作成すると、毎月のレポートクエリはどのように見えますか?四半期レポートのクエリ?それは混乱し、UNIONsJOINsのすべての場所になります。

WHERE句を含む単一のテーブルセットによって、クエリとレポートの管理が容易になります。

あなたは、リレーショナルデータベース理論について少し読んでいるかもしれません。 Wikipediaは良いスタート地点です。あなたがそれを知っているなら、基本はかなり簡単です。

+0

それはたくさんの意味があります。私はこれについていくつかの読書をします。ありがとう! – eek142

0

私はステージテーブルにデータをロードした後にメインテーブルに追加します。 1週間に1回、メインテーブルのすべてのデータを更新して、ソースごとにデータが正しいことを確認します。

Marcus

関連する問題