SQL Serverでのデータの並列インポート

bulkinsert bulk-load parallel-processing sqlbulkcopy sql-server

質問

SQL Serverにインポートするファイルは100以上あり、そのほとんどは500 MBです。私は、SQLサーバのパラレルインポートユーティリティを活用し、次のようないくつかのWebページを読んでいます:

1 TBのデータを30分でロードする方法

https://technet.microsoft.com/en-us/library/dd537533(v=sql.100).aspx

テーブルレベルロックを使用したデータの並行インポート

https://technet.microsoft.com/en-us/library/ms186341(v=sql.105).aspx

バルクインポートのロック動作の制御

https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx

と答えは、stackoverflow

1つのテーブルにパラレルに挿入する最速の方法

しかし、それらのどれもコードを使った簡単な例はありません。私はバルク挿入/ bcpの使い方を知っていますが、どこから並列インポートを開始するのか分かりません。誰もそれで私を助けることができますか?

私のシステムはWindowsで、私はSQL Server 2016を使用しています。ソースデータファイルはtxt形式です。

あなたの助けを前もってありがとう!

ジェイソン

受け入れられた回答

  1. ファイルパスの詳細をトラッキングテーブルにロードする

    表の作成FileListCollection TABLE(IDのID(1,1)、ファイルパスのVARCHAR(500)、ThreadNo tinyint、isLoaded int)

    DECLARE @FileListCollectionテーブル(ファイルパスVARCHAR(500))DECLARE @folderpath NVARCHAR(500)DECLARE @ cmd NVARCHAR(100)SET @folderpath = '' SET @ cmd = 'dir' + @folderpath + '/ b / s'

    INSERT INTO @FileListCollection EXECUTE xp_cmdshell @cmd

    DELETE FROM @FileListCollectionファイルパスはNULLです。

    FileListCollectionに挿入する(filepath、isLoaded)ファイルパスを選択する、0から@FileListCollection

  2. 各スレッドのスケジュール

    @ThreadNo int = 3を宣言するf FileListCollection fからThreadNo =(id%@ ThreadNo)を設定する

  3. 3つのセッションを開き、それぞれにスレッド番号を割り当てます

  4. 以下のスクリプトを実行してデータをロードします

    DECLARE @filepath NVARCHAR(500)DECLARE @filepath NVARCHAR(500)DECLARE @bcpquery NVARCHAR(MAX); @ThreadNo = @ThreadNoとisLoaded = 0の場合は、FileListCollectionからFileListCollectionを選択します。

    SET @bcpquery = 'bulk insert <Database>.dbo.Table from '''+ @filepath+''' with (fieldterminator = ''|'', rowterminator = ''\n'')';
    
    print @bcpquery
    --Load the Content in table
    execute sp_executesql @bcpquery;
    
    Update FileListCollection set isLoaded = 1
    WHERE filepath = @filepath
    

    終わり



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ