是否可以使用T-SQL更改文件的扩展名?就像C#方法Path.ChangeExtension
?
例如,我可能有一个名为test1.csv
的文件,我想更改它test1.txt
。
答案 0 :(得分:2)
在这个SQLMag article中,有一个名为sp_ReplaceFileOrDirNames
的程序可以做你想做的事。
他们的代码使用xp_cmdShell
,允许您调用操作系统命令。 (如果您不想要所有这些代码,也可以直接使用xp_cmdShell
致电move
。)
他们的code:
CREATE PROCEDURE sp_ReplaceFileOrDirNames
(@pathToObject varchar(200),
@oldName varchar(50),
@newName varchar(50))
AS
BEGIN
DECLARE @winCmd varchar(400)
DECLARE @isFileThere bit
DECLARE @isDirectory bit
DECLARE @parentDirExists bit
DECLARE @fullNamewithPath varchar(250)
SET NOCOUNT ON
SET @fullNamewithPath = @pathToObject+'\'+@oldName
CREATE TABLE #temp (isFileThere bit,
isDirectory bit,
parentDirExists bit)
INSERT #temp exec master..xp_fileExist @fullNamewithPath
SELECT @isFileThere = isFileThere,
@isDirectory = isDirectory
FROM #temp
IF (@isFileThere = 1)
BEGIN
SET @winCmd = 'rename ' +
@pathToObject+'\'+@oldName + ' ' + @newName
END
ELSE
BEGIN
IF (@isDirectory = 1)
BEGIN
SET @winCmd = 'move /Y ' + @pathToObject+ '\' +
@oldName + ' '+ @pathToObject+'\'+@newName
END
END
PRINT @winCmd
EXEC master..xp_cmdShell @winCmd
DROP TABLE #temp
SET NOCOUNT OFF
END
GO
他们的代码示例:
-- Rename a file called my Text.txt to test.txt in C:\appl\mssql.
exec sp_ReplaceFileOrDirNames @pathToObject= 'c:\appl\mssql',
@oldName='myText.txt',
@newName='test.Txt'