Is <cfsavecontent> MX? We only have CF4.5.  But we do have SQL 2000!

Thanks.
Karen

>>> [EMAIL PROTECTED] 7/24/2003 9:23:58 AM >>>
Even without using FOR XML you can output directly to XML from SQL Server... We had a 
process where I'm working currently which had been taking 3 hours to generate xml 
content to send to another outsourcing company.

The reason is this: In the beginning as you're building the first couple thousand 
records of xml content, CF is pretty quick about it, generating each record at under a 
second. As the xml string becomes longer and longer, it takes cf longer and longer to 
find the end of the string to append the next record. (iirc there's a similar issue 
with cffile action="append")... So once you've processed over 10k records it's solidly 
taking over 1 second per record and still slowing...

So what'd we do? Generate xml with a view... 

For example: 

CREATE VIEW dbo.v_xml_departments AS
SELECT '<department departmentid="' + dbo.xmlformat() + '">'
  + CASE LEN(TRIM(ISNULL(othercolumn,''))) WHEN 0 THEN ''
  ELSE '<otherelement>' + dbo.xmlformat(othercolumn) 
  + '</otherelement>' END + '</department>' 
  AS xmlinformation
FROM ourtable

dbo.xmlformat is a SQL2k user defined function which does this

set xml = replace(xml,'&','&amp;');
set xml = replace(xml,'''','&apos;');
set xml = replace(xml,'"','&quot;');
set xml = replace(xml,'<','&lt;');
set xml = replace(xml,'>','&gt;');
return xml;

this method gives us complete control over the xml returned by the view, then we use 
cf to turn it into a complete xml packet

<cfquery name="rs" datasource="ourdsn">
  SELECT * FROM v_xml_departments
</cfquery>

<cfsavecontent variable="xmlpacket">
  <?xml version="1.0" charset="utf-8"?>
  <departments>
    #arraytolist(rs["xmlinformation"],"")#
  </departments>
</cfsavecontent>

With 65k records in a reasonably complex schema, this method reduced processing time 
to generate the xml from 3hrs to 10 minutes. :) The query takes about 1 minute, the 
xml generation (the arraytolist function call) takes about 9 minutes.

ymmv & hth :)


s. isaac dealey                972-490-6624

new epoch                      http://www.turnkey.to 

lead architect, tapestry cms   http://products.turnkey.to 

tapestry api is opensource     http://www.turnkey.to/tapi 

team macromedia volunteer      http://www.macromedia.com/go/team 

certified advanced coldfusion 5 developer
http://www.macromedia.com/v1/handlers/index.cfm?ID=21816 


> Did you know you can make SQL return a recordset in XML
> format?  Simply
> append 'FOR XML' statement at the end of your SQL select
> statement and
> the result is an XML document.  The 'FOR XML' statement
> has 3 modes:
> AUTO, RAW, and EXPLICT.  There's also stiplulations on
> what type of SQL
> Select statement you can use 'FOR XML'.  I would check SQL
> Server Books
> and search for 'FOR XML clause'.  This is for SQL Server
> 2000.  Not sure
> if SQL Server 7 supports 'FOR XML'

> HTH - Tom

> -----Original Message-----
> From: Karen Harker
> [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, July 24, 2003 8:58 AM
> To: [EMAIL PROTECTED] 
> Subject: Processing time question

> I'm working on a program that effectively exports data
> from SQL Server
> into an XML file. All I've done is simply hard-code the
> tags, and
> plugged in values based on the appropriate database
> columns.  This data
> is set as a variable and then the variable is saved as a
> file on the
> server.  Eventually, I would like to FTP that file to
> another server.

> My problem is file size and processing time.  I've
> estimated that there
> will be about 9MB of data. I've been successful in
> outputting the data
> into multiple files of up to 100 records each. This
> typically did not
> take very long to process (15-30 seconds).  In the end,
> however, we
> would like to have the data in one large file. When I try
> to process the
> entire dataset all at once, it takes much too long (I've
> timed out at
> 1000 seconds!).  I've tested it at processing 1000 records
> (there are
> approx 4800 records) and I was able to get 3 sets loaded
> before timing
> out at 500 seconds.  So it seems that the processing time
> rises almost
> exponentially with the number of records per file.

> My questions are:
> 1) Why is that?
> and
> 2) What can we do?

> We would like to get this exporting/transfer/importing
> automated as much
> as possible because the data will have to be refreshed at
> least once a
> day, if not more frequently.  Also, importing the multiple
> files could
> cause problems with the target resource.


> Thanks.


> Karen R. Harker, MLS
> UT Southwestern Medical Library
> 5323 Harry Hines Blvd.
> Dallas, TX  75390-9049
> 214-648-8946
> http://www.utsouthwestern.edu/library/ 

> -----------------------------------------------
> To post, send email to [EMAIL PROTECTED] 
> To unsubscribe:
>    Send UNSUBSCRIBE to [EMAIL PROTECTED] 
> To subscribe / unsubscribe: http://www.dfwcfug.org 

> -----------------------------------------------
> To post, send email to [EMAIL PROTECTED] 
> To unsubscribe:
>    Send UNSUBSCRIBE to [EMAIL PROTECTED] 
> To subscribe / unsubscribe: http://www.dfwcfug.org 




-----------------------------------------------
To post, send email to [EMAIL PROTECTED] 
To unsubscribe:
   Send UNSUBSCRIBE to [EMAIL PROTECTED] 
To subscribe / unsubscribe: http://www.dfwcfug.org 

-----------------------------------------------
To post, send email to [EMAIL PROTECTED]
To unsubscribe:
   Send UNSUBSCRIBE to [EMAIL PROTECTED]
To subscribe / unsubscribe: http://www.dfwcfug.org

Reply via email to