あるデータベースから別のデータベースに大量のファイルをインポートしようとしています。元のデータベースはファイル名をデータベース テーブルに格納し、実際のファイルはディスク上のどこかに格納していました。
新しいデータベースは、filestream を使用してファイルを格納します。
以前にOPENROWSETを使用して新しいデータベースにファイルをインポートしましたが、その場合は手動でフルパスを指定しましたが、うまくいきました。
この場合、複数のファイルがあるため、ディスク上のディレクトリの場所と古いDBのファイル名を組み合わせてパスを動的に構築できると考えました。
ただし、結局のところ、OPENROWSET では文字列を連結できません。動的 SQL を使用する方法があることがわかりました (http://stackoverflow.com/questions/6621579/t-sql-issue-with-string-concat)。
ただし、古いデータベース テーブルの情報を OPENROWSET と組み合わせて、新しいデータベースにファイルを挿入できるようにする方法がわかりません。
私の現在のアイデアは次のようなものです。
create table #Files
(
IssueId int not null,
FileName nvarchar(12) not null,
FullPath nvarchar(255) not null
)
insert into #Files
select IssueId, FileName, @FilePath + '\' + FileName
from OLDDBO.dbo.Files
このようにして、ID、ファイル名、フル パスを取得できます。しかし、これら 3 つの項目をバイナリ データと一緒に新しい DB に挿入するにはどうすればよいでしょうか? 誰かが助けてくれることを願っています