2017-05-19 9 views
0

初心者からSQL Server!SQL Serverで派生列を一括挿入する方法はありますか?

SQL Serverに一括挿入しようとしました。 、そのCSVファイルで

NO,Name,age,Reference,dateTime,Category 
1,[email protected],23,Kiop,2017-03-02T12:23:00,D 
2,[email protected],22,CSK,2017-030-03T12:23:00,I 

私は下の表のスキーマにBulkInsertを使用してSQL Serverにそれを移動する必要があります:私はinput.csvという名前の、次のcsvファイルを持っている

create table BulkInsertTemp 
(
    no int, 
    name nvarchar(50), 
    age int, 
    Ref nvarchar(30), 
    currentDatetime datetime, 
    Category nvarchar(40) 
) 

は今、私はSQLに格納する必要がありますlike:

no Name age Ref currentDatetime  category 
-------------------------------------------------------- 
1 Stack 23 Kiop 2017-03-02 12:23:00  D 
2 OverEnd 22 CSK 2017-03-03 12:23:00  I 

SQL Serverに移動する別の1つのテーブルに対して以下のクエリを試行しました。

create table bulkInsert(no varchar(50),name varchar(50)); 

BULK INSERT bulkInsert 
FROM 'C:\MyInput\BulkInsert\BulkInsertData.txt' 
WITH 
    (FIRSTROW = 1, 
    ROWTERMINATOR = '\n', 
    FIELDTERMINATOR = ',', 
    ROWS_PER_BATCH = 10000) 

データを変更する必要がない場合は、私のクエリが機能しました。

しかしinput.csvに、私は名前が「スタック@メール」であればSQLに「スタック」として保存するなどなどの列の値を変更する必要が

私はドンので、一括挿入オプションに新しい一人です既存のものから列を派生させる方法を知っていません。

誰でも、私の要件を解決するために私を導きますか?

+2

最初に一時テーブルに元の値を一括を挿入して、あなたの本当の先テーブルに、そこから(INSERT ... SELECT)それらをコピーすることができ...一時テーブルから選択している間、あなたは何ができます – PrfctByDsgn

+1

'BULK INSERT'は最高の速度に最適化されていますが、そうすることによっていくらかの柔軟性が失われ、挿入時にデータを操作/変換/変更する方法を提供しません。 @PrfctByDsgnが概説したアプローチを使用する - ステージングテーブルに「そのまま」(操作や変更なしなど)を挿入し、SQL * Serverに入ったらデータに何をする必要があれば何でもしてください –

+0

あなたの提案をお寄せいただきありがとうございます私を試してみましょう –

答えて

1

これを行うには、SSISパッケージを構築することをお勧めします。方法がわからない場合や時間がない場合は、SQL Server Import and Export Wizardを実行してください。これは実際にあなたのためにSSISパッケージを作成します。

あなたが正しい方向に進むことを望む希望。

ノエル

関連する問題