2010-11-22 5 views
1

SQL2008を使用して、Integration Servicesのテーブルにセンサデータをロードしています。私は何百ものファイルを扱わなければならない。問題は、CSVファイルのスキーマが少し異なることです。各ファイルは最大20のデータフィールドを持つことができます。すべてのデータファイルには、これらのフィールドが共通しています。いくつかのファイルには、他のすべてのフィールドがあります。さらに、フィールドの順序はさまざまです。SQL2008 Integration Services - さまざまなファイルスキーマを使用したCSVファイルのロード

ここでは、ファイルスキーマの例を示します。 ステーション名、ステーションID、LOCAL_DATE、T_1、TD_1、RH_1、CL_1、RS_1、RI_1、PR_1、RD_1、SH_1、CL_2 ステーション名、ステーションID、LOCAL_DATE、T_1、TD_1、RH_1、CL_1、RS_1、RI_1、PR_1 、WS_1、WD_1、WSM_1、WDM_1、SH_1 ステーション名、ステーションID、LOCAL_DATE、T_1、TD_1、RH_1、RS_1、RI_1、PR_1、RD_1、WS_1、WD_1、WSM_1、WDM_1 ステーション名、ステーションID、LOCAL_DATE、T_1 、RH_1、RS_1、PR_1、VI_1、PW_1、WS_1、WD_1、WSM_1 ステーション名、ステーションID、LOCAL_DATE、T_1、RH_1、RS_1、WS_1、WD_1、WSM_1 ステーション名、ステーションID、LOCAL_DATE、T_1、RH_1、RS_1 、PR_1、VI_1、WS_1、WD_1、WSM_1

私はCreateNewOutputRows()とMyOutputBuffer.AddRowを介してデータを処理するデータフロースクリプトタスクを使用しています()。私はファイルのスキーマがCreateNewOutputRows()で定義されていないので、パッケージが失敗したため、より多くのファイルを持っていたので、データをロードするための作業パッケージがありましたが、信頼性と堅牢性がありません。

私は、ファイルスキーマのバリエーションに対応できる動的なソリューションを探しています。 Doeas誰もが任意のアイデアを持っていますか?

答えて

0

センサーの出力のデータモデルは誰が制御しますか?それがあなたでない場合、彼らは彼らが何をしているのか知っていますか?彼らが新しいセンサーを発明するたびに新しいモデルと一貫性のないモデルを作成すると、あなたはかなり大きな流れになります。

CSVファイルのスキーマの進化に影響を与える、または制御することができる場合は、最上位レベルのデータアーキテクチャを試してみてください。データベースが存在する前の悪い昔、レコードで構成されたファイルは、各レコードの最初のフィールドとして、しばしば「レコードタイプ」を持っていました。 CSVファイルは同じ方法で編成できます。すべてのレコードの最初のフィールドは、あなたが扱っているレコードのタイプを示すことができます。あなたがあなたのソフトウェアを維持することができるまで、あなたが不明なタイプを得るとき、それは "悪い入力ファイル"に入れてください。

これは十分に動的ではない場合は、人工知能を検討するか、別の仕事を探す必要があります。

+0

センサは、長年にわたって幅広い地域に設置されています。処理すべき有限のデータ項目がありますが、これらは各センサーで一貫して設定されていません。 – winsql

0

多分cmdコマンドが良いです。 cmdでは、sqlserver import csvを使用できます。

0

すべて同じ形式を持つCSVファイルが同じファイル名の規則を使用する場合、またはファイル形式の種類ごとにForEachループコンテナを使用することができます。

可能な方法は、CSVファイルの最初の行を読み込み、異なる種類(列名が最初の行にある場合)を確認してからSSISでスクリプト(VBで)を実行し、 ForEachループコンテナで使用するためにファイルを適切なフォルダに移動します。

関連する問題