如何更改文件的扩展名?

How to change extension of a file?

是否可以使用 T-SQL 更改文件的扩展名?就像C#方法Path.ChangeExtension?

例如,我可能有一个名为 test1.csv 的文件,我想更改它 test1.txt

在这个SQLMag article中,有一个名为sp_ReplaceFileOrDirNames的程序可以做你想做的事情。

他们的代码使用 xp_cmdShell 允许您调用操作系统命令。 (如果你不想要所有这些代码,你也可以直接用 move 调用 xp_cmdShell。)

他们的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'