【问题标题】:How do I check if a directory exists using SQL Server? [closed]如何使用 SQL Server 检查目录是否存在? [关闭]
【发布时间】:2012-12-07 15:19:16
【问题描述】:

我知道这个命令会创建一个目录:

EXEC master.sys.xp_create_subdir 'C:\testing\'

但是如何检查 'C:\testing\' 是否存在?

IF EXISTS(...

【问题讨论】:

  • 不同意这个被关闭,因为没有建设性。这个问题很清楚——我检查了帮助中心,看看什么是关闭的合法原因,但没有发现这与任何这些原因相匹配。这个问题虽然可能不是一个完整的代码段,但足以清楚地理解问题是问“我如何检查子目录的存在并在它存在时执行操作”
  • 我同意。现在,谷歌将我作为第一个热门歌曲之一带到了这里,并且信息非常简洁和准确。
  • 又一个可笑的“非建设性”关闭。该答案获得 7 次支持,两次被收藏,被浏览 16,117 次。是的,显然是无关紧要的事情。我们需要一个流程来投票淘汰版主以进行这种噱头。
  • 很烦人,我不能提供这个作为迟到的答案......如果你需要在函数中做一些内联的事情,例如使用sys.dm_os_file_exists,请参阅这个链接sqlshack.com/file-validation-in-sql-server-with-xp_fileexist for 2017+ >

标签: sql sql-server directory xp-cmdshell


【解决方案1】:
 CREATE TABLE ResultSet (Directory varchar(200))

 INSERT INTO ResultSet
 EXEC master.dbo.xp_subdirs 'c:\'

 Select * FROM ResultSet where Directory = 'testing'

会返回一个子目录列表,然后可以查看列表的内容。

【讨论】:

  • 我该如何从这个表中进行选择呢?我运行了命令,我看到了表格,但是我该如何查询呢?
  • 谢谢,这正是我想要的!
  • 我建议改用临时表,这样你就不会得到一个浮动的静态表。 CREATE TABLE #ResultSet (Directory varchar(200)) INSERT INTO #ResultSet EXEC master.dbo.xp_subdirs 'c:\' If Exists (Select * From #ResultSet where Directory = 'testing') Begin # Do stuff here End If you need要在代码块上多次执行此操作,请在代码的最开头创建临时表,然后在每次使用后截断它 - 稍微优化代码以避免每次重新分配。
  • 使用下面的代码:code DECLARE @BackupDestination nvarchar(500) = N'C:\testing\';声明 @DirectoryExists int; EXEC master.dbo.xp_fileexist @BackupDestination,@DirectoryExists OUT; IF @DirectoryExists = 0 EXEC master.sys.xp_create_subdir @BackupDestination;
猜你喜欢
  • 2018-11-25
  • 1970-01-01
  • 2010-11-25
  • 2023-03-26
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多