在SQL Server中将@tempTable导出为.txt文件

3

请查看我的上一个问题将SQL Server的值导出到txt文件。我能够通过上一个问题将值导出到.txt文件。我想要将@tempTable导出到.txt文件。我该如何做?

编辑:我的需求:我想要将表中仅更新的数据导出到.txt文件,例如用户在现有表中插入了10行新数据,我希望这10行数据在.txt文件中。我在触发器中使用Inserted表来获取更新的行,但是当我尝试从bcp导出到.txt文件时,我无法知道Inserted表的完整上下文([database] . [schema] . [tableName])。因此,我决定将Inserted表中的数据存储在@tempTable中以便导出到.txt文件。

这就是我应该做的在SQL Server中将插入的表数据导出到.txt文件

1个回答

1
你可以简单地将内存表加载到普通表中,然后使用你已经拥有的导出代码。
select * into queryout from @tempTable
-- your code from step 1
drop table queryout

这是一个更新的触发器版本,应该可以完成工作。
create trigger monitorTest1 on test for insert as 
declare @sql varchar(8000); 
select * into tempTable from inserted
SELECT @sql = 'bcp "select * from test2.dbo.tempTable" queryout C:\temp\mytest.txt -c -t -T -S localhost'
exec xp_cmdshell @sql
drop table tempTable

创建触发器monitorTest1在test表上 对于插入操作 如下: 创建临时表tempTable(name varchar(100),id int) 从插入的数据中选择并插入到tempTable表中声明 @sql varchar(8000) SELECT @sql = 'bcp "select * from test2.dbo.tempTable" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS' 执行 xp_cmdshell @sql 删除表tempTable 完成 - niren
创建触发器monitorTest1在test表上 在插入之后 作为 选择* into queryout from inserted; 声明@sql varchar(8000); 选择@sql = 'bcp "select * from queryout" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'; 执行xp_cmdshell @sql; 删除表queryout; 结束 - niren
我尝试了你的答案:我按照你在更新的答案中所说的创建了触发器,用于测试表,并且我尝试向测试表插入值,结果是:它一直在执行,从未完成。 - niren
在我的服务器上,它可能运行了大约5秒钟。嗯...我猜你已经成功地在SQL MGMT Studio中执行了xp_cmdshell命令。你在sqlserver日志中看到了什么吗? - Reto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接