如何更改文件的扩展名?

时间:2015-01-09 08:07:27

标签: sql sql-server tsql

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

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

1 个答案:

答案 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'