0

SQL Serverにインポートするファイルが100以上あり、その大部分は500 MBです。私は、SQLサーバーの並行輸入ユーティリティを活用したいと以下のもののようなウェブページの数を、読んだ:SQL Serverでデータを並行してインポートする

30分

でデータのインポート

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

で1つのTBのデータをロードする方法表レベル・ロック

一括インポート

のためのロック動作の制御

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の

Fastest way to insert in parallel to a single table

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

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

ご協力いただきありがとうございます。

ジェイソン

答えて

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

    テーブルFileListCollection表(Idがint型のアイデンティティ(1,1)、作成ファイルパスVARCHAR(500)、ThreadNo TINYINT、isLoaded INT )

    DECLAREの@FileListCollection表(ファイルパスVARCHAR(500)) DECLAREの@folderpath NVARCHAR(500) DECLAREはNVARCHARを@cmd(100) SETの@folderpath = ' SET @cmd = 'DIR' + @folderpath + '/ B/S'

    INSERT INTO @FileListCollection EXECUTE xp_cmdshellをは

    を@cmdファイルパスがNULL

    インサートである@FileListCollection FROMをDELETE FileListCollection(ファイルパス、isLoaded) 選択ファイルパス、

  2. スケジュールスレッドごと@FileListCollectionから0

    は@ThreadNo INT = 3 更新FセットThreadNo =(ID%@ ThreadNo)FileListCollectionから

  3. 開く3 Fセッションを宣言し、ロードするために各

  4. 実行に以下のスクリプトをスレッド番号を割り当てますデータ

    DECLARE @filepath NVARCHAR(500) DECLARE @filepath NVARCHAR(500) DECLARE @bcpquery NVARCHAR(MAX); DECLARE @ThreadNo INT = 1 WHILEは(FileListCollection ThreadNo = @ThreadNo 及び= 0 isLoaded FROM SELECT TOP 1 * )をEXISTS は=ファイルパス ThreadNo = @ FileListCollection FROM SELECT TOP 1 @filepathをBEGIN ThreadNo とisLoaded = 0

    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 
    

    END

+0

あなたの返信ありがとう!確かめます。 – Jason

+0

上記のcodロジックは、同時使用でパフォーマンスを向上させるために並行インポートに役立ちます。質問に記載されているbcpコマンドのテーブルロック – Syed

関連する問題