Ir al contenido principal

SQL Server - backup de una sola tabla

La idea del código es crear un backup, usando BCP de SQL, 
en mi caso estoy usando Ms. SQL SERVER 2008 R2.


 
CREATE PROCEDURE [dbo].[SP_TB_BACKUP]
@FILTRO VARCHAR(20),
@RUTA VARCHAR(200),
@EXT VARCHAR(3)
AS
BEGIN
    --1.- CREACION DE LA TABLA 
    CREATE TABLE #TABLE_TEMP (ITEM INT IDENTITY(1,1), NOMBRE_TB NVARCHAR(100), NOMBRE NVARCHAR(100), ONLYNAME NVARCHAR(100), ONLYSCHEMA NVARCHAR(100))

    --2.- INSERTANDO EN LA TABLA
    INSERT INTO #TABLE_TEMP (NOMBRE_TB,NOMBRE,ONLYNAME,ONLYSCHEMA)
    SELECT ('['+table_catalog+'].['+table_schema+'].['+table_name+']') AS TABLENAME1,(table_schema+'.'+table_name) AS TABLENAME2, table_name AS ONLYNAME, TABLE_SCHEMA as ONLYSCHEMA
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE table_name like '%'+@FILTRO+'%'
    ORDER BY table_name

    --3.- BUBLE TABLAS
    DECLARE @columnHeader VARCHAR(8000), @Union VARCHAR(8000),@name_tb VARCHAR(200),@name_tb_cod VARCHAR(200);
    DECLARE @columnHeader2 VARCHAR(8000)
    DECLARE @FileName VARCHAR(250), @bcpCommand VARCHAR(8000), @fecha VARCHAR(10);
    DECLARE @TB_ONLY_SCHEMA VARCHAR(100), @TB_ONLY_NAME VARCHAR (100);
    DECLARE @i INT, @f INT;
    
    SET @fecha= (SELECT(CONVERT(char(10),GETDATE(),103)));
    SET @i=1;
    SET @f=(SELECT COUNT(*) FROM #TABLE_TEMP);

    WHILE (@i<=@f)
    BEGIN
        SET @name_tb = (SELECT NOMBRE FROM #TABLE_TEMP WHERE ITEM=@i)
        SET @name_tb_cod = (SELECT NOMBRE_TB FROM #TABLE_TEMP WHERE ITEM=@i)
        SET @FileName = REPLACE(@RUTA+'\jrbkp_'+@fecha+'-'+@name_tb+'.'+@EXT+'','/','-')
        SET @TB_ONLY_NAME = (SELECT ONLYNAME FROM #TABLE_TEMP WHERE ITEM=@i)
        SET @TB_ONLY_SCHEMA = (SELECT ONLYSCHEMA FROM #TABLE_TEMP WHERE ITEM=@i)

        SELECT @columnHeader = COALESCE(@columnHeader+',' ,'')+ ''''''+column_name+'''''' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=@TB_ONLY_NAME AND TABLE_SCHEMA=@TB_ONLY_SCHEMA
        SELECT @columnHeader2 = COALESCE(@columnHeader2+',' ,'')+ 'CONVERT(varchar(MAX),['+column_name+'])' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=@TB_ONLY_NAME AND TABLE_SCHEMA=@TB_ONLY_SCHEMA

        SET @Union ='SELECT '+ @columnHeader +' UNION ALL '

        SET @bcpCommand = 'bcp "'+@Union+' SELECT '+@columnHeader2+' FROM '+@name_tb_cod+'" queryout "'
        SET @bcpCommand = @bcpCommand + @FileName + '" -c -T -t";" -r"\n"'
        SET @bcpCommand = 'master..xp_cmdshell '+ ''''+@bcpCommand+'''';

        EXEC (@bcpCommand);

        SET @i=@i+1;
        SET @name_tb =''; SET @name_tb_cod=''; SET @FileName=''; SET @TB_ONLY_NAME=''; 
        SET @columnHeader=null;SET @columnHeader2=null;
        SET @Union=''; SET @bcpCommand=''; SET @name_tb_cod=''; SET @TB_ONLY_SCHEMA='';
    END
END

Comentarios

Anónimo dijo…
Genial, gracias por el porte.

Entradas más populares de este blog

Lista de Software Libre

Aquí una lista de software libre equivalente para distribuciones linux como también para windows. Estaré añadiendo más ya que como sabrán ahí mucho software que falta colocar: Software en Windows Software Libre Equivalente 3D Studio Max K-3D ( http://www.k-3d.org/ ) Wings 3D ( http://www.wings3d.com/ ) Art of Illusion ( http://www.artofillusion.org/ ) Blender ( http://www.blender.org/ ) POV-Ray ( http://www.povray.org ) ACDSee KuickShow ( http://kuickshow.sourceforge.net/ ) ShowImg ( http://www.jalix.org/projects/showimg/ ) Gwenview ( http://gwenview.sourceforge.net/ ) GQview ( http://gqview.sourceforge.net/ ) Eye of GNOME ( http://www.gnome.org/projects/eog/ ) gThumb ( http://gthumb.sourceforge.net/ ) pornview ( http://sourceforge.net/projects/pornview/ ) MyACDSee ( http://myacdsee.sourceforge.net/home/index.php/ ) f-spot ( http://f-spot.org/ ) Adobe Acrobat Reader okular ( http://kpdf.kde.org/okular/ ) Xpdf ( http://www.foolabs.com/xpdf/ ) Evince ( htt

Memoria flash

La humilde unidad USB podría almacenar muchos más datos en los próximo dos años. Una nueva tecnología de memoria, desarrollada en la universidad estatal de Arizona, podría ofrecer densidades de almacenamiento hasta 1.000 veces mayores que la memoria flash existente. Los investigadores desarrollaron la tecnología, conocida como celda de metalización programable (PMC), para contrarrestar los límites físicos de la tecnología actual de memoria de almacenamiento. En lugar del enfoque tradicional de la electrónica que consiste en desplazar los electrones entre iones (partículas cargadas), las celdas PMC emplean una tecnología conocida como nanoiónica para que sean los propios iones los que se desplacen. Leer más