2016-08-30 41 views
-1

SQL Serverから取得したExcelデータがありますが、SQL Serverのスクリプトを更新しましたので、ExcelをSQL Serverに再度インポートする必要があります。私はタスク - インポートデータを使用しました。ExcelファイルをSQL Serverにインポート - データ型に関する問題があります

多少の誤差があります。[DBO] [AA](エラー)メッセージに

コピー。エラー0xc0202009:データフロー タスク1:SSISエラーコードDTS_E_OLEDBERROR。 OLE DBエラーが発生しました が発生しました。エラーコード:0x80004005。 OLE DBレコードが利用可能です。 ソース: "Microsoft SQL Serverネイティブクライアント11.0" Hresult:0x80004005 説明 "無効な日付形式"。 (SQL Serverインポートおよびエクスポートウィザード )

エラー0xc020901c:データフロータスク1: 先でエラーが発生しました - 先にAA.Inputs [接続先入力] .Columns [時間] - AA.Inputsは、[デスティネーション入力]。 が返された列ステータスは、 "データ値が 指定されたタイプをオーバーフローしたため変換に失敗しました。" (SQL Serverのインポートとエクスポートウィザード)

エラー0xc0209029:データフロータスク1:SSISエラーコード DTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラーコード0xC020907A が発生し、「宛先 - AA.Inputs [Destination Input]」のエラー行の処理がエラー時にエラーを指定するため、「宛先 - AA.Inputs [宛先入力]」が失敗しました。指定されたコンポーネントの指定されたオブジェクトでエラー が発生しました。そこに の詳細については、この前に投稿されたエラーメッセージが表示されることがあります。 (SQL Serverのインポートとエクスポートウィザード)

エラー0xc0047022:データフロータスク1:SSISエラーコード DTS_E_PROCESSINPUTFAILED。 "Destination-AA"(107)のProcessInputメソッドがエラーコード0xC0209029で失敗しましたが、 が入力 "宛先入力"(120)を処理していました。識別されたコンポーネント がProcessInputメソッドからエラーを返しました。エラーはコンポーネントに固有の ですが、このエラーは致命的で、データフロー タスクの実行が停止します。このエラーの詳細については、 の前にエラーメッセージが表示されることがあります。 (SQL Serverのインポートと エクスポートウィザード)

私は誰にも提案があるかどうかわかりません。

Excelファイルのデータ型は限られているため、数値は浮動小数点型です。宛先SQL Serverテーブルと一致しないデータ型が多数あります。

1)保存エクセルとして保存使用してCSV形式のテキストファイルに:高い性能とコントロールのデータ型変換のために

+0

インポートするデータのサンプルを含める場合、インポートウィザードで使用した設定を表示し、個々のエラーを解決しようとしたことを示す場合は、ヘルプを表示する可能性が高くなります。どのデータに問題があるのか​​確認しましたか?たぶん、いくつかの行をインポートし、それらの行の特定のエラーを処理してみてください。 – SMM

答えて

1

。あなたは、詳細についてはデータ を記述するためのフォーマットのファイルを使用することができます

BULK 
INSERT mytable 
FROM 'path_to_csdv_file.csv' 
WITH 
(
    FIELDTERMINATOR = ';', 
    ROWTERMINATOR = '\n' 
) 

、レビュー:

BULK INSERT

0

それは、データのように聞こえる )は、データをインポートするには、次のスクリプトを使用します型が整列していない。私が一番簡単なのは、インポートウィザードを使ってデータタイプを正しく設定することです。あなたが正しくデータ型の設定をしたら

http://www.wiseowl.co.uk/blog/s231/schedule_data_import_in_sql_server_pt2.htm

、次の操作を行います。 テーブルを右クリック>スクリプトテーブルとしては>へ>新しいクエリエディタウィンドウを作成します。さて、結果をExcelにコピー&ペーストするだけです。すべてのフィールドのすべてのデータ型を入力します。また、次の操作を行います。

テーブル>スクリプトテーブルAs> Insert To> New Query Editorウィンドウを右クリックします。

最終的には、このようなものが得られるはずです。

CREATE TABLE [dbo].[Something] 
(
    [Date] VARCHAR(MAX), 
    Change VARCHAR(MAX), 
    Index_Code VARCHAR(MAX), 
    Price_Return_Level VARCHAR(MAX) 
) 
    bulk insert dbo.GII_ICLstg 
    from 'C:\your_path_to_file.txt' 
    WITH 
    (
    FIRSTROW = 2, 
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 
    GO 
    INSERT INTO dbo.Something 
    SELECT 
     [Date] = CASE WHEN ISDATE([Date])=1 THEN CAST([Date] AS DATETIME) ELSE NULL END, 
     [Change], 
     Index_Code, 
     Price_Return_Level = CASE WHEN ISNUMERIC(Price_Return_Level) = 1 
    FROM dbo.Something 

個人的には、これが最も簡単な方法です。

関連する問題