<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Scriptella ETL Blog</title>
	<atom:link href="http://scriptella.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://scriptella.wordpress.com</link>
	<description>Make ETL Easier - Use Scriptella</description>
	<lastBuildDate>Thu, 26 Jan 2012 10:56:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='scriptella.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Scriptella ETL Blog</title>
		<link>http://scriptella.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://scriptella.wordpress.com/osd.xml" title="Scriptella ETL Blog" />
	<atom:link rel='hub' href='http://scriptella.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Running ETL files from Maven</title>
		<link>http://scriptella.wordpress.com/2012/01/16/running-etl-files-from-maven/</link>
		<comments>http://scriptella.wordpress.com/2012/01/16/running-etl-files-from-maven/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 14:26:05 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/?p=64</guid>
		<description><![CDATA[If you are using Maven, and your project includes dependency to scriptella-tools: You can always use the following command to execute various ETL files:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=64&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you are using Maven, and your project includes dependency to scriptella-tools:<br />
<pre class="brush: xml;">
      &lt;dependency&gt;
        &lt;groupId&gt;com.javaforge.scriptella&lt;/groupId&gt;
        &lt;artifactId&gt;scriptella-tools&lt;/artifactId&gt;
        &lt;version&gt;1.0&lt;/version&gt;
      &lt;/dependency&gt;
</pre><br />
You can always use the following command to execute various ETL files:<br />
<pre class="brush: plain;">
mvn exec:java -Dexec.mainClass=&quot;scriptella.tools.launcher.EtlLauncher&quot; -Dexec.args=&quot;/path/to/etl/file.xml&quot;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=64&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2012/01/16/running-etl-files-from-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>New feature: global variables</title>
		<link>http://scriptella.wordpress.com/2010/08/22/new-feature-global-variables/</link>
		<comments>http://scriptella.wordpress.com/2010/08/22/new-feature-global-variables/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 22:27:29 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[migrations]]></category>
		<category><![CDATA[New features]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[etl]]></category>
		<category><![CDATA[globals]]></category>
		<category><![CDATA[scriptella]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/?p=33</guid>
		<description><![CDATA[Let&#8217;s start with a quick intro to Scriptella dataflow which is based on a concept of rows and columns(which can be treated as variables). When a query is executed it emits multiple rows making them available to nested elements. As a consequence a variable change is only visible to nested elements of the query. Here [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=33&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s start with a quick intro to Scriptella dataflow which  is based on a concept of rows and columns(which can be treated as variables). When a query is executed it emits multiple rows making them available to nested elements. As a consequence a variable change is only visible to nested elements of the query. Here is an example to illustrate the above said:<br />
<pre class="brush: xml;">
&lt;properties&gt;
userCount=0  &lt;!-- Setting an initial value for the variable --&gt;
&lt;/properties&gt;

&lt;query connection-id=&quot;db&quot;&gt;
    &lt;!-- The query selects number of record in the Users table, the variable userName is set to the value of COUNT(*) column.
The change is available ONLY to nested elements --&gt;
    SELECT COUNT(*) as userCount from Users
    &lt;script connection-id=&quot;log&quot;&gt;
        Overriden value of userName: $userName
    &lt;/script&gt;
&lt;/query&gt;
&lt;script connection-id=&quot;log&quot;&gt;
     Out of scope/unmodified value of userName: $userName
&lt;/script&gt;
</pre></p>
<p>At times it is more convenient just to set a global variable, so that it&#8217;s value can be consumed in other places of ETL file. In Scriptella 1.0 this was possible only with a help of <a href="http://scriptella.javaforge.com/faq.html#SET_VARIABLE">workarounds</a>:</p>
<ul>
<li>Use System.setProperty and System.getProperty to share a variable between scripts.</li>
<li>Another approach is similar to the technqiue utilized in anonymous inner classes to modify a single-element array declared as a final variable.The following example illustrates it:</li>
</ul>
<p><pre class="brush: xml;">
    &lt;!-- The query defines a scoped context by declaring 
           a globalVar array available to nested elements.
           Since the globalVar is an array, changes to its elements are immediately available to all callers --&gt;
    &lt;query connection-id=&quot;jexl&quot;&gt;
        //Array with only one element modifiable by nested scripts
        globalVarArray = [0];
        query.next();
        &lt;query connection-id=&quot;db&quot;&gt;
            SELECT COUNT(*) as userCount from Users
            &lt;script connection-id=&quot;jexl&quot;&gt;
                &lt;!-- Store userCount in a global array --&gt; 
                globalVarArray[0] = userCount;
            &lt;/script&gt;
            &lt;!--And now print the value of global variable we've just set --&gt;
            &lt;script connection-id=&quot;log&quot;&gt;
                Inner script: globalVar=${globalVarArray[0]}
            &lt;/script&gt;
        &lt;/query&gt;
        &lt;script connection-id=&quot;log&quot;&gt;
           Outer script: globalVar=${globalVarArray[0]}
        &lt;/script&gt;
    &lt;/query&gt;

    &lt;script connection-id=&quot;log&quot;&gt;
        Out of scope: globalVar=${globalVarArray[0]}
    &lt;/script&gt;
</pre><br />
If you run the script the following output is printed on the console:<br />
<code><br />
Inner script: globalVar=USER_COUNT<br />
Outer script: globalVar=USER_COUNT<br />
Out of scope: globalVar=0<br />
</code><br />
As you can see it is possible to declare global variables in Scriptella, but this requires an additional query element and use of arrays. Scriptella 1.1 introduces support for etl.globals &#8211; a global map for variables available to ETL elements. Based on that, the example above can be rewritten to leverage the new mechanism:<br />
<pre class="brush: xml;">
    &lt;query connection-id=&quot;db&quot;&gt;
        SELECT COUNT(*) as userCount from Users
        &lt;script connection-id=&quot;jexl&quot;&gt;
            etl.globals['globalVar'] = userCount;
        &lt;/script&gt;  
        &lt;script connection-id=&quot;log&quot;&gt;
            Inner script: etl.globals.globalVar=${etl.globals['globalVar']}
        &lt;/script&gt;
    &lt;/query&gt;
    &lt;script connection-id=&quot;log&quot;&gt;
        Outer script: etl.globals.globalVar=${etl.globals['globalVar']}
        globalVar=$globalVar (normal variable globalVar is not defined)
    &lt;/script&gt;
</pre><br />
The code became less verbose. Additionally the &#8220;out of scope&#8221; script was removed since global variables have no scope. The line <code>globalVar=$globalVar (normal variable globalVar is not defined)</code> was added to demonstrate that global variables do not affect normal variables, however it is not recommended for a global variable to share a name with  normal variable to avoid possible misunderstandings.<br />
And this time the output would be:<br />
<code>Inner script: etl.globals.globalVar=USER_COUNT<br />
Outer script: etl.globals.globalVar=USER_COUNT<br />
globalVar=$globalVar (normal variable globalVar is not defined)</code><br />
<strong>Implementation note:</strong> As of now the etl.globals map is not shared between scripts when called by &#8220;scriptella&#8221; driver. <a href="http://www.javaforge.com/issue/12790">Bug-12790</a> was logged to track this issue and will be resolved prior to 1.1 release.<br />
<a name="update1"><strong>Update 1:</strong></a><br />
Thanks to Anji for pointing out that the example with an array initialization <code>globalVarArray = [0]</code> will not work in Scriptella 1.0 due to lack of array instantiation support in JEXL1.1. JavaScript can be used as an alternative as explained in the <a href="http://scriptella.javaforge.com/faq.html#SET_VARIABLE">FAQ entry</a>, or you can use Janino driver to achieve the same effect:<br />
<pre class="brush: xml;">
&lt;etl&gt;
	&lt;connection id=&quot;janino&quot; driver=&quot;janino&quot;/&gt;
	&lt;connection id=&quot;log&quot; driver=&quot;text&quot;/&gt;

	&lt;!-- The query defines a scoped context by declaring
       a globalVar array available to nested elements.
       Since the globalVar is an array, changes to its elements are immediately available to all callers --&gt;
	&lt;query connection-id=&quot;janino&quot;&gt;
		// Array with only one element modifiable by nested scripts
		set(&quot;globalVarArray&quot;, new int[1]);
		next();
		&lt;script connection-id=&quot;janino&quot;&gt;
			&lt;!-- Store userCount in a global array --&gt;
			((int[])get(&quot;globalVarArray&quot;))[0] = 22;
		&lt;/script&gt;
		&lt;!--And now print the value of global variable we've just set --&gt;
		&lt;script connection-id=&quot;log&quot;&gt;
				Inner script: globalVar=${globalVarArray[0]}
		&lt;/script&gt;
	&lt;/query&gt;
&lt;/etl&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=33&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2010/08/22/new-feature-global-variables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>Support for JDBC batching and query fetch has been added</title>
		<link>http://scriptella.wordpress.com/2010/08/14/support-for-jdbc-batching-and-query-fetch-has-been-added/</link>
		<comments>http://scriptella.wordpress.com/2010/08/14/support-for-jdbc-batching-and-query-fetch-has-been-added/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 20:50:14 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[migrations]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[batching]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[scriptella]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/?p=12</guid>
		<description><![CDATA[JDBC batching is a very important feature which allows sending multiple commands to the database in one call. Scriptella batching is controlled by statement.batchSize parameter. The value of this parameter specifies number of statements to be combined in a batch before sending it to the database. Please note that behavior for batching depends on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=12&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>JDBC batching is a very important feature which allows sending multiple commands to the database in one call. Scriptella batching is controlled by <strong>statement.batchSize</strong> parameter. The value of this parameter specifies number of statements to be combined in a batch before sending it to the database.</p>
<p>Please note that behavior for batching depends on the type of statements processed, as the result non-prepared SQL statements (statements without ? parameters) are processed in a single batch group different from parametrized prepared SQL statements. The grouping rules are the following:</p>
<ul>
<li>Normal(non-prepared) statements are always grouped in a single batch per ETL script element.</li>
<li>Parameterized prepared statement use SQL text as a group key, i.e. different statements go into different groups what may sometimes introduce an undesired behavior.</li>
</ul>
<p>As the result mixing parameterized (prepared statements) with normal statements in a single ETL element is NOT RECOMMENDED for batch-mode since statements are processed in different batch groups and results may be unexpected.</p>
<p>The following 2 examples show RECOMMENDED ways of batching.<br />
<strong>Example 1.</strong> Extract-&gt;Load using PreparedStatement.setParameters/addBatch:</p>
<div id="_mcePaste"><pre class="brush: xml;">
&lt;connection id=&quot;out&quot; ...&gt;
   #enables batching and set batch size to 100
   statement.batchSize=100
&lt;/connection&gt;
&lt;query connection-id=&quot;in&quot;&gt;
    SELECT * from Bug
    &lt;script connection-id=&quot;out&quot;&gt;
        INSERT INTO Bug VALUES (?ID, ?priority, ?summary, ?status);
    &lt;/script&gt;
&lt;/query&gt;
</pre></p>
</div>
<div id="_mcePaste"><strong>Example 2</strong>. Bulk load of non-prepared statements (without ?, but $ are allowed)</div>
<div id="_mcePaste"><pre class="brush: xml;">
&lt;script connection-id=&quot;out&quot;&gt;
    INSERT INTO Bug VALUES (1, 'One');
    INSERT INTO Bug VALUES (2, 'Two');
    INSERT INTO Bug VALUES (3, '$Value');
    ....
&lt;/script&gt;
</pre></p>
</div>
<p>Please pay attention to the following items when use batching:</p>
<ol>
<li>Queries are not supported in batch mode. Typically batches are intended for DB modifications, consider using a separate connection if you need querying.</li>
<li>Batch buffers(pending SQL commands)  are flushed immediately before ETL script commits, rather than  after ETL element completes. You may face this problem  only while querying  tables being updated, which is not recommended (see item 1).</li>
<li>Optimal size of batch varies between DBs and available JVM heap size, but in most cases it should not be less than 10.</li>
</ol>
<p>Another important parameter <strong>statement.fetchSize</strong> is added to give the JDBC driver a hint about  the number of rows that should be fetched from the database when more rows are needed for the result set.  Examples:</p>
<p><pre class="brush: xml;">
&lt;connection url=&quot;jdbc:mysql://localhost:3306/db&quot; ...&gt;
   #MySQL-specific  hack
   #set fetchSize to Integer.MIN_VALUE to avoid loading all data into memory
   statement.fetchSize = -2147483648
&lt;/connection&gt;
&lt;connection url=&quot;jdbc:oracle:thin:@localhost:1521:orcl&quot; ...&gt;
   #For performance reasons increase fetchSize
   statement.fetchSize = 1000
&lt;/connection&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=12&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2010/08/14/support-for-jdbc-batching-and-query-fetch-has-been-added/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>New feature: dynamic include elements</title>
		<link>http://scriptella.wordpress.com/2007/05/05/new-feature-dynamic-include-elements/</link>
		<comments>http://scriptella.wordpress.com/2007/05/05/new-feature-dynamic-include-elements/#comments</comments>
		<pubDate>Sat, 05 May 2007 14:25:32 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[migrations]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/2007/05/05/new-feature-dynamic-include-elements/</guid>
		<description><![CDATA[It seems obvious and natural, but it was challenging for me to add dynamic includes implementation requested by one of Scriptella users. Here is an example of dynamic includes. This feature is especially useful for building Rails-like migrations. Later me or Mike will post a short how-to on a simplified migrations in Scriptella ETL.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=7&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It seems obvious and natural, but it was challenging for me to add dynamic includes implementation requested by one of Scriptella users. Here is an example of dynamic includes.<br />
<pre class="brush: xml;">
&lt;query connection-id=&quot;db&quot;&gt;
    SELECT version FROM schema_info
    &lt;script&gt;
	&lt;include href=&quot;${version}.sql&quot;/&gt;
     &lt;/script&gt;
&lt;/query&gt;
</pre><br />
This feature is especially useful for building Rails-like migrations. Later me or Mike will post a short how-to on a simplified migrations in Scriptella ETL.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/scriptella.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/scriptella.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=7&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2007/05/05/new-feature-dynamic-include-elements/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>New feature: ?{textfile &#8216;url/file_name&#8217;} to upload CLOBs</title>
		<link>http://scriptella.wordpress.com/2007/04/20/new-feature-textfile-urlfile_name-to-upload-clobs/</link>
		<comments>http://scriptella.wordpress.com/2007/04/20/new-feature-textfile-urlfile_name-to-upload-clobs/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 19:15:50 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/2007/04/20/new-feature-textfile-urlfile_name-to-upload-clobs/</guid>
		<description><![CDATA[Yesterday I&#8217;ve implemented a requested feature which allows inserting CLOB content from files. It works the same way as ?{file } for BLOBs. A simple example: INSERT INTOEmail (ID, Text) VALUES (1 , ?{textfile &#8216;email1.txt&#8217;})<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=6&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I&#8217;ve implemented a <a href="http://javaforge.com/proj/tracker/itemDetails.do?navigation=true&amp;task_id=5037">requested feature</a> which allows inserting CLOB content from files. It works the same way as ?{file } for BLOBs.</p>
<p>A simple example:</p>
<p>INSERT INTOEmail (ID, Text) VALUES (1 , ?{textfile &#8216;email1.txt&#8217;})</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/scriptella.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/scriptella.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=6&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2007/04/20/new-feature-textfile-urlfile_name-to-upload-clobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Scriptella for In-Memory Testing</title>
		<link>http://scriptella.wordpress.com/2007/03/23/using-scriptella-for-in-memory-testing/</link>
		<comments>http://scriptella.wordpress.com/2007/03/23/using-scriptella-for-in-memory-testing/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 13:08:13 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/2007/03/23/using-scriptella-for-in-memory-testing/</guid>
		<description><![CDATA[I&#8217;ve started writing a small article on how-to populate/refresh a database with JUnit 4 and Spring. In fact it&#8217;s very simple &#8211; just lookup and run a Runnable ETLExecutor registered in the application context.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=4&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started writing a small article on how-to populate/refresh a database with JUnit 4 and Spring.</p>
<p>In fact it&#8217;s very simple &#8211; just lookup and run a Runnable ETLExecutor registered  in the application context.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/scriptella.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/scriptella.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=4&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2007/03/23/using-scriptella-for-in-memory-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
		<item>
		<title>Working with dates in JEXL expressions</title>
		<link>http://scriptella.wordpress.com/2007/03/19/working-with-dates-in-jexl-expressions/</link>
		<comments>http://scriptella.wordpress.com/2007/03/19/working-with-dates-in-jexl-expressions/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 20:44:32 +0000</pubDate>
		<dc:creator>Fyodor Kupolov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://scriptella.wordpress.com/2007/03/19/working-with-dates-in-jexl-expressions/</guid>
		<description><![CDATA[I&#8217;ve just added a useful feature to the Scriptella 0.8 code base. It allows formatting/parsing dates in JEXL expressions. JEXL lacks a possibility to instantiate Java object or directly invoke static methods. The solution is to use a helper variable named etl which provides several utility classes. etl.date is a date format/parse helper. Here is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=3&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just added a useful feature to the Scriptella 0.8 code base. It allows formatting/parsing dates in JEXL expressions. JEXL lacks a possibility to instantiate Java object or directly invoke static methods. The solution is to use a helper variable named etl which provides several utility classes.</p>
<p><strong>etl.date</strong> is a date format/parse helper. Here is a simple ETL to script utilizing the new feature:</p>
<pre>&lt;!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd"&gt;
&lt;etl&gt;
    &lt;connection driver="text" url="${etl.date.today('yyyyMMdd')}.log"/&gt;
    &lt;script&gt;Current time is ${etl.date.today('yyyy-MM-dd HH:mm:ss.SSS')}&lt;/script&gt;
&lt;/etl&gt;</pre>
<pre>In future I can add a possibility to work files, numbers etc. using the same approach, e.g. ${etl.io.listFiles(...)}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/scriptella.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/scriptella.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/scriptella.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/scriptella.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/scriptella.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scriptella.wordpress.com&amp;blog=785332&amp;post=3&amp;subd=scriptella&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scriptella.wordpress.com/2007/03/19/working-with-dates-in-jexl-expressions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8a47f809e0c96eea87ec50b87752690d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">scriptella</media:title>
		</media:content>
	</item>
	</channel>
</rss>
