22,210
社区成员
发帖
与我相关
我的任务
分享
DECLARE @dir sysname,@cmd nvarchar(max);
SET @dir = 'C:/';
CREATE TABLE #tmp(filename nvarchar(1024));
SET @cmd = N'dir "' + @dir + '*.csv" /B'
INSERT #tmp EXEC master.dbo.xp_cmdshell @cmd;
DELETE #tmp WHERE filename IS NULL;
IF EXISTS(SELECT * FROM #tmp WHERE filename LIKE '%找不到文件%')
BEGIN
RAISERROR('找不到文件',16,1)
END
ELSE
BEGIN
DECLARE @SQL nvarchar(MAX);
SET @SQL = '';
SELECT @SQL = @SQL + 'EXEC xp_cmdshell N''bcp 数据库.dbo.表 in "' + @dir + filename
+ '" -w -T -t, -r/n'';' + CHAR(10)
FROM #tmp;
EXEC(@SQL);
END
DROP TABLE #tmp;
DECLARE @dir sysname,@cmd nvarchar(max);
--你的csv文件的路径
SET @dir = 'C:/';
CREATE TABLE #tmp(filename nvarchar(1024));
SET @cmd = N'dir "' + @dir + '*.csv" /B'
--执行命令,会返回在指定的路径下面的所有csv文件,也就是你要导入的csv文件
--每个文件名,都是一样数据
INSERT #tmp EXEC master.dbo.xp_cmdshell @cmd;
--删除最后的一行null
DELETE #tmp WHERE filename IS NULL;
IF EXISTS(SELECT * FROM #tmp WHERE filename LIKE '%找不到文件%')
BEGIN
RAISERROR('找不到文件',16,1)
END
ELSE
BEGIN
DECLARE @SQL nvarchar(MAX);
SET @SQL = '';
--拼接导入csv文件的语句
SELECT @SQL = @SQL + 'EXEC xp_cmdshell N''bcp 数据库.dbo.表 in "' + @dir + filename
+ '" -w -T -t, -r/n'';' + CHAR(10)
FROM #tmp;
--执行导入
EXEC(@SQL);
END
DROP TABLE #tmp;