Я пытаюсь импортировать большое количество файлов из одной базы данных в другую. Исходная база данных хранила имена файлов в таблице базы данных, а сами файлы где-то на диске.
Новая база данных использует файловый поток для хранения файлов.
Раньше я импортировал файлы в новую базу данных с помощью OPENROWSET, но в этих случаях я указывал полный путь вручную, и это работало нормально.
Поскольку в этом случае есть несколько файлов, я решил, что могу динамически построить путь, сочетающий расположение каталога на диске с именами файлов из старой БД.
Однако, как оказалось, 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
Таким образом, у меня есть идентификатор, имя файла и полный путь. Но как мне вставить эти три элемента вместе с бинарными данными в новую БД? Я надеюсь, что кто-то может помочь