最初に、一連のフラット ファイルからデータを一括インポートする TSQL スクリプトを作成しました。(下記参照)。SQLSERVER で関数を使用すると、データを必要なデータ型に変換し、データ セットで遭遇する可能性のある固有の条件に基づいてデータの変換を処理するのは簡単でした。たとえば、すべての列の先頭または末尾にスペースを含めることができ、null 値を表す日付列は特定の値であり、お金であるデータは数値の末尾に負の数を表すダッシュを含めることができます。 sqlserver のスカラー値関数を使用して、さまざまな条件と case ステートメントを処理し、一貫したデータ セットを可能にします。
私の目標は、これを SSIS に移行することですが、SSIS 内で既に行ったことを複製するのは非常に面倒です。SSIS には、変換を行うためのツール (文字マップ、データ変換、派生列ツール、スクリプト コンポーネントなど) があります。-- スクリプトにすでにあるものを取得するのは、膨大な量の作業のようです。何かを再利用できるようには見えません。小さなテーブルではそれで問題ないかもしれませんが、テーブルごとに 50 列以上の同じ複雑な変換をキー入力するのは本当に面倒です。うーん。私は何かが欠けているに違いない。ご協力いただきありがとうございます。
INSERT INTO [TEST1].[dbo].[Table1]
SELECT
dbo.TRIM([ID])
,dbo.FixDate([CompleteDate])
,dbo.TRIM([IsDeleted])
,dbo.Text2Numeric([QtyTotal])
,dbo.Text2Numeric([OrderQty])
,dbo.Text2Money([Price])
FROM OPENROWSET(BULK '\\server1test\temp\import1.txt', FIRSTROW=2,
FORMATFILE='\\server1test\temp\import1.Xml'
) as t1 ;
GO