<?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:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>吹き抜ける風とともに &#187; プログラム</title>
	<atom:link href="http://www.windtoblow.net/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0/feed" rel="self" type="application/rss+xml" />
	<link>http://www.windtoblow.net</link>
	<description>sheidiaの日々つれづれな雑記</description>
	<lastBuildDate>Sun, 22 Aug 2010 16:25:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.windtoblow.net/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0/feed" />
<cloud domain='www.windtoblow.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Access テーブルにデータをインサート</title>
		<link>http://www.windtoblow.net/470.html</link>
		<comments>http://www.windtoblow.net/470.html#comments</comments>
		<pubDate>Thu, 21 Aug 2008 15:36:19 +0000</pubDate>
		<dc:creator>sheidia</dc:creator>
				<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://www.windtoblow.net/?p=470</guid>
		<description><![CDATA[忘れないうちに、というか結構知らない人もいるかもなので記述
Accessのテーブルにデータをインサートする時、
まぁVBAでそのロジックを記述すると思うのだけど
その時、貴方はどう書くかな？

1.SQL文（INSERT ]]></description>
			<content:encoded><![CDATA[<p>忘れないうちに、というか結構知らない人もいるかもなので記述</p>
<p>Accessのテーブルにデータをインサートする時、<br />
まぁVBAでそのロジックを記述すると思うのだけど</p>
<p>その時、貴方はどう書くかな？</p>
<p><span id="more-470"></span></p>
<blockquote><p>1.SQL文（INSERT INTO) を記述する<br />
2.AddNewを使用する</p></blockquote>
<p>だいたい上の２点のどちらかだよねー。<br />
（※テキストデータ等のインポートは今回は省きます）<br />
最終的にどちらもテーブルにデータがセットされるんだけど<br />
Accessの場合はAddNewのがInsert Into文を書いてセットするよりも断然速い</p>
<p>とある案件のPGで、数100万件のデータを扱うときに<br />
最初INSERT INTO文を書いてDocmdでSQLを走らせる形になってました。<br />
（というか、100万件のデータをAccessで扱うのがどうかと思うんだけども・・・）</p>
<p>それで全てのデータをインサートし終えるまでに3時間もの時間が掛かっていたのですが、<br />
AddNewを使用するように変更を行ったところ1時間まで処理時間を短縮することに成功しました。</p>
<p>また、SystemMDBとデータMDBというようにMDBを分割していたのですが、<br />
INSERT INTO文を使用していたときに SystemMDBのファイルサイズがどでかく膨張していたのですが<br />
AddNewを使用することによりその現象もなくなりました。</p>
<p>ちょっと仕事がまだ忙しかったりするので、<br />
何故速いのかとか、そういうのをまだ調べ切れていないのですが速いです。ほんとに。</p>
<p>とあるサイトではINSERT INTO文を使用するのと比べると5倍以上速くなるとかいう記載もありました。<br />
ただし、これはAccessの場合のみでSQLServerでAddNewを使用すると逆に遅くなるようです。</p>
<p>まぁテーブルの持ち方が双方違うんだろうなぁと簡単に予想してますけど。<br />
ちなみにAddNewを使用する場合は以下の様に記述します。</p>
<blockquote><p>Dim cn As New ADODB.Connection<br />
Dim rs As New ADODB.Recordset<br />
&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>&#8216;初期設定<br />
cn.Open &#8220;Provider=Microsoft.Jet.OLEDB.4.0;&#8221; &amp; _<br />
&#8220;Data Source=[MDBフルパス(データを追加するテーブルを持っているMDB)];&#8221;<br />
rs.Open &#8220;[データを追加するテーブル名]&#8220;, cn, adOpenKeyset, adLockOptimistic</p>
<p>&#8216;データセット<br />
rs.AddNew<br />
rs.Fields(&#8220;[フィールド名]&#8220;).Value = &#8220;[セットしたいデータ]&#8221;<br />
rs.Update</p>
<p>&#8216;クローズ<br />
rs.close<br />
cn.close</p></blockquote>
<p>こんなとこだろうか？<br />
データセットのところをループさせるようにすればどんどん下に追加していけますね。</p>
<p>間違ってたらごめんねー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windtoblow.net/470.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.windtoblow.net/470.html" />
	</item>
	</channel>
</rss>
