2012-07-18 98 views
7

有人能告诉我如何使用T-SQL将文件内容读入MS SQL变量吗?如何将文件内容读入SQL变量

+0

介绍一些关于你是什么试图做到完全。你想要读什么类型的内容以及什么类型的变量?你的意思是使用tsql将平面文件的内容导入到表中? – vmvadivel 2012-07-18 10:59:52

+0

我想读取* .sql文件并使用EXEC命令运行脚本。 – 2012-07-18 11:34:43

+0

您可能还想看看'sqlcmd'模式和[':r'开关](http://blogs.msdn.com/b/patrickgallucci/archive/2007/09/03/sqlcmd-and-the-这个小小的r.aspx功能)取决于你为什么需要这个。 – 2012-07-18 11:46:47

回答

16
DECLARE @FileContents VARCHAR(MAX) 

SELECT @FileContents=BulkColumn 
FROM OPENROWSET(BULK'PathToYourFile.sql',SINGLE_BLOB) x; 

SQL Server服务帐户需要具有显式读取文件的权限。

+0

我试过了你的方法,它绝对有效!十分感谢你。 但是,我似乎没有阅读整个文件。它要么没有完全加载到变量中,要么以二进制形式加载。如何以ASCII形式加载完整文本? – 2012-07-18 14:44:53

+0

@BabuJames - 在我看来,变量可能需要'nvarchar',所以也许尝试。另外你怎么确定它没有完全加载? SSMS将截断长变量的输出。请参阅[如何从SSMS获取完整结果集](http://stackoverflow.com/questions/8930034/how-to-get-the-full-resultset-from-ssms/8930141#8930141)。 – 2012-07-18 14:50:57

+0

您的所有建议确实能帮助我更深入地了解这个问题,即使它仍然没有解决。场景是:我有大约10个相同数据库的备份文件。定期我需要将它们与最新的模型更改同步。所以,现在我必须恢复每个文件,运行脚本并进行备份。因此,我想到了一些自动化,并想出了一个脚本的概念,它将逐一恢复并执行操作。其他一切都很好,但是在其上执行本地保存的.sql文件是有问题的。 – 2012-07-19 09:19:00

相关问题