Wednesday, May 2, 2012

Script: Extract data from all tables in a database to individual text files.


DECLARE @tablename  VARCHAR(256) 
DECLARE @cmd   VARCHAR(4000)
DECLARE @TABLE_NAME  VARCHAR(50)
DECLARE @DBname  VARCHAR(100)
DECLARE @TABLESCHEMA VARCHAR(100)
DECLARE @PathName VARCHAR(50)



DECLARE db_cursor CURSOR FOR
SELECT
  TABLE_DB     AS DBname,
  TABLE_SCHEMA AS TABLESCHEMA,
  TABLE_NAME   AS TABLENAME
FROM TABLE_NAMES_VIEW

OPEN db_cursor  
FETCH NEXT FROM db_cursor
 INTO @DBname,
      @TABLESCHEMA,
      @TABLENAME
WHILE @@FETCH_STATUS = 0  
BEGIN 
    SET @PathName = @DBname + '.' + @TABLESCHEMA + '.' + @TABLENAME
    SET @cmd = 'master.dbo.xp_cmdshell ''BCP '  + @PathName
      + ' out G:\output\' + @tablename + '.txt -t "|" -T -c'''
    PRINT @cmd
    EXEC (@cmd)
 FETCH NEXT FROM db_cursor 
 INTO @DBname,
      @TABLESCHEMA,
      @TABLENAME
END 

CLOSE db_cursor  
DEALLOCATE db_cursor

No comments:

Post a Comment