SQL - Crear un archivo .xml a desde un SP SQL

 
Vista:
sin imagen de perfil
Val: 21
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Manuel (12 intervenciones) el 15/11/2018 23:00:51
Hola a todos, necesito de su valiosa ayuda por favor

Necesito crear un SP en SQL que pueda crear un archivo .xml y que lo almacene en una ruta especifica, el nombre del archivo deberá de aparecer de acuerdo al resultado de 2 campos que están contenidos en la misma tabla
En esa tabla tengo cientos de resultados y se deberá de crear un archivo por cada fila

select XMLDoc,noDoctoFiscal,ShipperId from xDoctoFiscalDigital

este es un ej del resultado:

XMLDoc -----------------------------------------------------------noDoctoFiscal----- ShipperId
<?xml version="1.0" *******</cfdi:Comprobante> --- FAC66847 ---- 0EPV079764

Nombre del archivo deberá de aparecer así: FAC66847_0EPV079764.xml

donde XMLDoc contiene la información de la factura, y necesito que se guarde en una ruta especifica Ej. c:\Facturas

Espero contar con ayuda, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Isaias (1921 intervenciones) el 15/11/2018 23:42:27
¿En que motor de base de datos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Manuel (12 intervenciones) el 16/11/2018 00:12:02
Hola Isaias, estoy usando sql server 2008
mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Manuel (12 intervenciones) el 16/11/2018 20:03:31
Hola Isaias,
gracias por responder

ya revise el link que me enviaste sin embargo no me sirve, te comento que el campo que quiero exportar ya tiene el formato y sintaxis correcto de un xml por lo que no es necesario hacerle nada. unicamente es exportarlo tal y como esta.

encontré este código de la pagina:
https://www.mssqltips.com/sqlservertip/4353/export-sql-server-records-into-individual-text-files/
Supongo que algo así necesito y pero no creo que sea necesario insertar una tabla temporal
Mi tabla tiene miles de registros y necesito un archivo por cada registro

Este es el código pero no se como adaptarlo a mis necesidades
Espero me puedan ayudar, gracias



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
--Declare variables
DECLARE @fileText VARCHAR(MAX);
DECLARE @fileName VARCHAR(500) ;
DECLARE @command varchar(1000);
 
--
--Declare parameters
--
--Here you need to specify the output directory for the files to be created
DECLARE @outputDir VARCHAR(250)='c:\tmp\files\';
 
--Here you need to specify the SQL instance from which the data will be exported
DECLARE @instanceName VARCHAR(50)='.\SQL2K14'
 
--Here you specify whether you are connecting to the SQL instance with a
--trusted connection (Windows Authentication) or not
DECLARE @isTrustedConnection BIT=1
 
--If isTrustedConnection is set to 0 then you will need to
--add username and password for connecting to the SQL Server instance
DECLARE @userName VARCHAR(50)='loginName'
DECLARE @password VARCHAR(50)='password'
 
--Create temporary table if it does not exist
IF OBJECT_ID('TestDB..tmpSource') IS NULL
CREATE TABLE TestDB..tmpSource(
 [fileText] [TEXT] NULL
);
 
--Declare cursor and populate with data
DECLARE db_cursor CURSOR FOR
SELECT [fileText], [fileName]
FROM TestDB..FileContents
WHERE [code] IN ('code2', 'code3');
 
--Open cursor
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @fileText, @fileName
 
WHILE @@FETCH_STATUS = 0
BEGIN
    --Clean temporary table
    DELETE FROM TestDB..tmpSource
 
    --Insert record into temporary table
    INSERT INTO TestDB..tmpSource (fileText) VALUES(@fileText);
 
    --Dynamically construct the BCP command
    --If the user connects to the SQL instance using a trusted connection
    IF (@isTrustedConnection=1)
       SET @command = 'bcp "SELECT * FROM TestDB..tmpSource" queryout "'+ @outputDir + @fileName + '" -S ' + @instanceName +' -T -c'
    --If the user connects to the SQL instance using username/password
    ELSE
       SET @command = 'bcp "SELECT * FROM TestDB..tmpSource" queryout "'+ @outputDir + @fileName + '" -S ' + @instanceName +' -c -U ' + @userName + ' -P '+ @password
 
    --Execute the BCP command
    EXEC xp_cmdshell @command, no_output
 
    --Fetch next records
    FETCH NEXT FROM db_cursor INTO @fileText, @fileName
END
 
--Close and deallocate cursor
CLOSE db_cursor
DEALLOCATE db_cursor
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Manuel (12 intervenciones) el 16/11/2018 21:36:17
Hola creo que ya estoy a un paso, corro este script pero me falta correr algún exec para que genere los archivos, me podrán ayudar por favor
gracias


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
DECLARE @noDoctoFiscal VARCHAR(100)
DECLARE @Ext VARCHAR(10)
DECLARE @Command NVARCHAR(4000)
DECLARE cAttachments CURSOR FOR
SELECT  noDoctoFiscal,XMLDoc
FROM TECAPP.dbo.xDoctoFiscalDigital where folioDigital >=66847
ORDER BY noDoctoFiscal
 
OPEN cAttachments
 
FETCH NEXT FROM cAttachments
INTO @noDoctoFiscal, @Ext
 
WHILE @@FETCH_STATUS = 0
BEGIN
 
    SET @Command = 'bcp "SELECT XMLDoc FROM TECAPP.dbo.xDoctoFiscalDigital
                WHERE noDoctoFiscal = ''' + @noDoctoFiscal + '''"
                queryout "C:\' + @noDoctoFiscal + '.xml'  + '" -c -T'
 
    PRINT @Command
 
 
    FETCH NEXT FROM cAttachments
    INTO @noDoctoFiscal, @Ext
 
END
 
CLOSE cAttachments
DEALLOCATE cAttachments
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Isaias (1921 intervenciones) el 16/11/2018 23:31:05
Con el BCP lo puede lograr
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Manuel (12 intervenciones) el 16/11/2018 23:36:25
Isaias

al correr el script me arroja como resultado:

1
2
3
Exec Master..xp_Cmdshell 'bcp "SELECT XMLDoc FROM TECAPP.dbo.xDoctoFiscalDigital
    WHERE noDoctoFiscal = 'TEC66847'"
    queryout "C:\TEC66847.xml" -c -T

y al correrlo me arroja":

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'TEC66847'.
Msg 105, Level 15, State 1, Line 2
Unclosed quotation mark after the character string '"
queryout "C:\TEC66847.xml" -c -T
'.


supongo que algo esta fallando en mis parametros
1
2
3
SET @Command ='Exec Master..xp_Cmdshell ''bcp "SELECT XMLDoc FROM TECAPP.dbo.xDoctoFiscalDigital
    WHERE noDoctoFiscal = ''' + @noDoctoFiscal + '''"
    queryout "C:\' + @noDoctoFiscal + '.xml'  + '" -c -T'


please help
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Crear un archivo .xml a desde un SP SQL

Publicado por Isaias (1921 intervenciones) el 16/11/2018 23:31:21
Con el BCP lo puede lograr
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar