<?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/"
	>

<channel>
	<title>Snow Giraffe Tech &#187; insert select</title>
	<atom:link href="http://www.snowgiraffe.com/tech/tag/insert-select/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.snowgiraffe.com/tech</link>
	<description>rails, rubies, and sometimes dolphins</description>
	<lastBuildDate>Mon, 17 Oct 2011 17:45:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ar-extensions 0.9.1 supports INSERT SELECT for ActiveRecord</title>
		<link>http://www.snowgiraffe.com/tech/418/ar-extensions-activerecordbaseinsert_select/</link>
		<comments>http://www.snowgiraffe.com/tech/418/ar-extensions-activerecordbaseinsert_select/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 21:38:10 +0000</pubDate>
		<dc:creator>blythe</dc:creator>
				<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ar-extensions]]></category>
		<category><![CDATA[insert select]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.snowgiraffe.com/tech/?p=418</guid>
		<description><![CDATA[The ar-extensions plugin, which extends ActiveRecord to help optimize interaction between Rails and the database, now provides support for MySQL INSERT SELECT functionality.]]></description>
			<content:encoded><![CDATA[<p>In addition to some other super duper features in version 0.9.1 just released, <a href="http://github.com/zdennis/ar-extensions/tree/master" target="_blank">ar-extensions plugin</a> (and <a href="http://rubyforge.org/frs/?group_id=2113">gem</a>) now supports INSERT SELECT functionality for MySQL to move records from one or more tables into another. Instead of querying eleventy billion records, possibly running out of memory, and then so slowly inserting records one by one, ar-extensions extends ActiveRecord to do it all under the covers in one transaction without writing custom SQL.</p>
<pre class="ruby"><span class="comment"># Insert one copy of each book into the shopping cart. </span>
  <span class="constant">CartItem</span><span class="punct">.</span><span class="ident">insert_select</span><span class="punct">(</span><span class="symbol">:from</span> <span class="punct">=&gt;</span> <span class="symbol">:book</span><span class="punct">,</span>
                         <span class="symbol">:select</span> <span class="punct">=&gt;</span> <span class="punct">['</span><span class="string">books.id, ?, ?, ?, now()</span><span class="punct">',</span> <span class="attribute">@cart</span><span class="punct">.</span><span class="ident">to_param</span><span class="punct">,</span> <span class="number">1</span><span class="punct">,</span> <span class="constant">Time</span><span class="punct">.</span><span class="ident">now</span><span class="punct">],</span>
                         <span class="symbol">:into</span> <span class="punct">=&gt;</span> <span class="punct">[</span><span class="symbol">:book_id</span><span class="punct">,</span> <span class="symbol">:shopping_cart_id</span><span class="punct">,</span> <span class="symbol">:copies</span><span class="punct">,</span> <span class="symbol">:updated_at</span><span class="punct">,</span> <span class="symbol">:created_at</span><span class="punct">]})</span>

<span class="comment"># GENERATED SQL example (MySQL):</span>
<span class="comment"># INSERT INTO `cart_items` ( `book_id`, `shopping_cart_id`, `copies`, `updated_at`, `created_at` )</span>
<span class="comment"># SELECT books.id, '134', 1, '2009-03-02 18:28:25', now() FROM `books`</span></pre>
<p>Using the <span class="inline_code">:keywords</span>, <span class="inline_code">:pre_sql</span>, and <span class="inline_code">:post_sql</span> the <a href="http://snowgiraffe.com/rdocs/ar-extensions/files/ar-extensions/lib/ar-extensions/insert_select_rb.html"> insert_select options</a>, support all <a href="http://dev.mysql.com/doc/refman/5.1/en/insert.html" target="_blank">mysql options</a> available to insert and select statements including</p>
<ul>
<li>IGNORE</li>
<li>ON DUPLICATE KEY UPDATE</li>
<li>LOW_PRIORITY</li>
<li> SQL_CACHE</li>
<li>DELAY</li>
</ul>
<p>before and after comments and anything you can imagine you want to customize.</p>
<p>To install:</p>
<pre><code>script/plugin install git://github.com/zdennis/ar-extensions.git
</code></pre>
<p>For more documentation, refer to <a href="http://snowgiraffe.com/rdocs/ar-extensions/files/ar-extensions/lib/ar-extensions/insert_select_rb.html"> insert_select rdocs</a> and main <a href="http://snowgiraffe.com/rdocs/ar-extensions/">rdocs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snowgiraffe.com/tech/418/ar-extensions-activerecordbaseinsert_select/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

