質問: SQL Serverにインポートするファイルは100以上あり、そのほとんどは500 MBです。私は、SQLサーバのパラレルインポートユーティリティを活用し、次のようないくつかのWebページを読んでいます: 1 TBのデータを30分でロードする方法 テーブルレベルロックを使用したデータの並行インポート バルクインポートのロック動作の制御 と答えは、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 .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 ``` 終わり