一時テーブルにBULKINSERT

テキストをそのまま取り込むのではなく関数等で加工したものを取り込みたかったので

一度、一時テーブルに取り込んだSQLサンプル

 

/* 一時テーブルの作成 */

CREATE TABLE #tbl_hoge(

[colums_a] [nchar](10) NOT NULL,

[colums_b] [nchar](10) NULL,

[colums_c] [smallint] NULL)


/* 一時テーブルにBULKINSERT */

BULK INSERT #tbl_hoge FROM 'C:\SQLServerExpress実験\hoge.txt'

WITH     (        FIELDTERMINATOR =','    )


/* 一時テーブルから本テーブルへINSERT */

INSERT INTO tbl_hoge

SELECT colums_a,

SUBSTRING(colums_b,1,3),

colums_c * 99

FROM #tbl_hoge

 

/* INSERT結果の確認 */

SELECT *FROM tbl_hoge

 

 

 

OracleのSQLLoaderでは関数が使えたのだが、

SQLServerではSSISとか使わないとダメそうだったのでメモ

 

OPNEROWSETを使っても同等のことができる。

https://haradago.hatenadiary.org/entry/20110221/p1

 

 

動作確認環境:SQL Server 2017