SQLサーバーから単一のPDFファイルを特定の場所にコピーできます。 しかし、私はそれを複数のファイルでどうやって行うことができますか?xp_cmdshellを使用して複数のファイルをコピーする方法
EXEC master..xp_cmdshell 'BCP "SELECT PDF FROM [MEJAMES].[dbo].tblPolicyForms WHERE FormID = 20 " queryout "C:\Users\UserName\Docs\Folder\'[email protected]+'.pdf" -T -N'
私はフォームID、PDFを持つテーブルが、PDF_Filename
select FormID,PDF,PDF_Filename
from [dbo].[tblPolicyForms]
はどのように各フォームIDをループ、PDFファイルを抽出し、それに名前を付けることができますPDF_Filename.pdf?これはあなた何でもして出力リストを定義することができますので、私はカーソルの敗走を行ってきました
CREATE TABLE #tblPolicyForms
(
FormID INT NOT NULL
,PDF varbinary(max) NULL
,PDF_FIlename VARCHAR(max)
)
INSERT INTO #tblPolicyForms
SELECT FormID,
PDF,
PDF_FileName
FROM [dbo].[tblPolicyForms]
WHERE FormID IN (19,20,21,22)
--select * from #tblPolicyForms
DECLARE @FormID varchar(4);
DECLARE @FileName VARCHAR(200);
DECLARE FormID_cursor CURSOR FOR
SELECT
FormID
,PDF_FIlename
FROM
#tblPolicyForms
WHERE FormID IN (19,20,21,22)
--where whatever conditions you need to get the FormIDs you want to use
OPEN FormID_cursor
FETCH NEXT FROM FormID_cursor
INTO @FormID, @FileName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC master.dbo.xp_cmdshell 'BCP "SELECT PDF FROM [DBname].[dbo].tblPolicyForms " queryout "C:\Users\UserName\Documents\ExportDir\'[email protected]+'" -T -N'
FETCH NEXT FROM FormID_cursor
INTO @FormID, @FileName
END
CLOSE FormID_cursor
DEALLOCATE FormID_cursor
クエリデータを1行に1ファイルのBCPまたは.cmdファイルに出力し、代わりにそのファイルを呼び出します。代わりに、xp_cmdshellと呼ばれる文字列を複数行で作成します(例: '' BCP ')。 FormID = 22 "queryout" C:\ Users \ UserName \ Docs \ Folder \ " - T-N '+ CHAR(13)+ CHAR(10)+' BCP"からPDFを選択[MEJAMES]。[dbo] .tblPolicyForms WHERE FormID = IL00034H.pdf "-T -N'' –