Трябва да кача множество файлове (файл1, файл2, файл3...) в таблици (Таблица1, таблица2, таблица3...) в база данни на sql сървър с помощта на функцията OpenRowset. Всички файлове се съхраняват в C:\download Използвам следната заявка, която работи добре.
INSERT INTO dbo.Table1
SELECT * from OpenRowset('MSDASQL','Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=C:\download;','select * from File1.csv' )
Въпросът е как да подадете името на файла и името на таблицата като параметър.
Благодаря Тони за отговора. Поставих sql в съхранена процедура, както следва. Но той е много по-бавен от оригиналния твърд кодиран файл и имена на таблици. Всяко предложение да го накарам да работи по-бързо.
ALTER proc [dbo].[ImportFiles]
@FilePath varchar(100) ,
@FileName varchar(100),
@TableName varchar(250)
AS
BEGIN
DECLARE @SqlStmt nvarchar(max)
DECLARE @ErrorCode int
SET @SqlStmt='Truncate table dbo.[' + @TableName +']'
EXEC(@SqlStmt);
-- i COULD PUT TRUNCATE statement in the sate statement as insert just before INSERT INTO.
set @SqlStmt=N'
INSERT INTO '+@TableName+N'
select *
from openrowset(''MSDASQL''
,''Driver={Microsoft Access Text Driver (*.txt, *.csv)};
DefaultDir='+@FilePath+N'''
,''select * from "'+@FileName+N'"'')'
EXEC(@SqlStmt);