tql中的相对路径?

Gra*_*ton 5 t-sql sql-server

如何获取t sql中的相对路径?例如,一个.sql文件位于文件夹D:\ temp中,我想在文件夹D:\ temp\App_Data中获取文件hello.txt的路径.如何使用相对路径引用?

假设我正在SQL服务器管理工​​作室内执行sql文件.

mat*_*scb 8

我有一个类似的问题,并使用sqlcmd变量和%CD%伪变量解决了它.进行了一些试验和错误,以结合所有的部分.但最终还是把它全部搞定了.此示例期望该script.sql文件与该文件位于同一目录中runscript.bat.

runscript.bat

sqlcmd -S .\SQLINSTANCE -v FullScriptDir="%CD%" -i script.sql -b
Run Code Online (Sandbox Code Playgroud)

script.sql

BULK INSERT [dbo].[ValuesFromCSV]
FROM '$(FullScriptDir)\values.csv'
with
(
    fieldterminator = ',',
    rowterminator = '\n'
)
go
Run Code Online (Sandbox Code Playgroud)


Cor*_*ger 6

.sql文件只是....一个文件.它没有任何自己的位置感.它可以解决它(你没有指定),它可以了解它的位置,文件的位置.

我注意到你提到了一个App_Data文件夹,所以我猜想涉及ASP.NET.如果要在Web应用程序中使用相对路径,请参阅MapPath

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx


Gil*_*ilM 5

服务器正在执行 t-sql。它不知道客户端从哪里加载文件。您必须在脚本中嵌入路径。

DECLARE @RelDir varchar(1000)
SET @RelDir = 'D:\temp\'
...
Run Code Online (Sandbox Code Playgroud)

也许您可以以编程方式将路径放入 .sql 脚本文件中的 SET 命令中,或者您可以使用 sqlcmd 并将相关目录作为变量传入。