SSISを使用してソースからSQL Server 2008データベースにデータをインポートする方法を知りたいだけです。
私は単純なtxt
ファイルを持っています(実際にはこのブログからです: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into- sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server / )
1,James,Smith,19750101
2,Meggie,Smith,19790122
3,Robert,Smith,20071101
4,Alex,Smith,20040202
SQL Serverで新しいテーブルを作成しました。
CREATE TABLE Test
(ID INT,
FirstName VARCHAR(50),
LastName VARCHAR(50),
BirthDate SMALLDATETIME)
データフロータスクをドラッグしてから、フラットファイルソースとOLE DB Destination。
新しいフラットファイル接続を作成し、テキストファイルを選択すると、[詳細設定]タブに4つの列があるため、次のようにデータ型を変更しました。
次に、新しいOLB DE接続をセットアップして編集し、[テーブルまたはビューの名前]の下に[dbo]。[Test]を設定します。+各列を入力から宛先にマップします。
しかし、それを実行すると、これらのエラーが発生しました:
警告:SSIS警告コードDTS_W_MAXIMUMERRORCOUNTREACHED。 Executionメソッドは成功しましたが、発生したエラーの数(4)
最大許容数(1)に達しました失敗に終わります。これは、エラーの数がMaximumErrorCountで指定された数に達したときに発生します。 MaximumErrorCountを変更するか、エラーを修正してください。エラー:データフロータスクでの0xC02020A1、フラットファイルソース[52]:データ変換に失敗しました。列「列3」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。
エラー:データフロータスクでの0xC0209029、フラットファイルソース[52]:SSISエラーコードDTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラーコード0xC0209084が発生したため、「出力列「列3」(90)」は失敗し、「出力列「列3」(90)」のエラー行の処理は、エラーの失敗を示しています。指定されたコンポーネントの指定されたオブジェクトでエラーが発生しました。この前に、失敗に関する詳細情報を含むエラーメッセージが表示される場合があります。
エラー:データフロータスク0xC0202092、フラットファイルソース[52]:データ行1のファイル "D:\ New folder\text.txt"の処理中にエラーが発生しました.
エラー:データフロータスクでの0xC0047038、SSIS.Pipeline:SSISエラーコードDTS_E_PRIMEOUTPUTFAILED。コンポーネント「フラットファイルソース」(52)のPrimeOutputメソッドは、エラーコード0xC0202092を返しました。パイプラインエンジンがPrimeOutput()を呼び出したときに、コンポーネントが失敗コードを返しました。障害コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインは実行を停止しました。この前に、失敗に関する詳細情報を含むエラーメッセージが表示される場合があります。
私の場合、正常にインポートされない原因は何ですか?
Windows 7で評価版を使用しています。
本当にありがとう!
FINALLY I COULD IMPORT FROM TXT FILE TO SQL 2008 DATABASE,
LET'S NAME THE 4 COLUMNS AND THEIR DATA TYPE AS :
id : two-byte signed integer [DT_I2]
firstname : String[DT-STR] - Outputcolumnwith :20
lastname: String[DT-STR] - Outputcolumnwith :20
yeardate: String[DT-STR] - Outputcolumnwith :20
THEN IN DERIVED COLUMN EDITOR :
Derived column name : yeardate
Derived column : replace 'yeardate'
Expression : (DT_DBTIMESTAMP)(SUBSTRING(yeardate,1,4) + "-" + SUBSTRING(yeardate,5,2) + "-" + SUBSTRING(yeardate,7,2))
あなたはかなりよく知られた問題に遭遇しました。 SSISがデータをインポートしようとすると、ロケールに対応した変換が行われ、YYYYMMDD形式はうまく変換されません。ソリューションで概要を説明した「文字列としてインポートして実際の日時に変換する」アプローチを使用できますが、SSISに非常にスマートになるのをやめるようにネイティブアプローチを使用するよりも遅く、多くのリソースを消費します。
フラットファイルソースを右クリックし、[詳細エディターの表示]を選択します。入力プロパティと出力プロパティで、出力列を展開し、列(BirthDate)を見つけて、FastParse
プロパティをFalseからTrue
に変更します。
その変更のみで、パッケージは正常に実行されます
また、同じ問題について 優れた回答 SOから
19750101はsmalldatetimeに変換できません。
書式設定の問題はかなり確実です。
派生列を追加して、テキストファイルの値をSQL Serverに挿入できる形式にフォーマットしてください