<?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>いなばにっき &#187; PostgreSQL</title>
	<atom:link href="http://blog.1783.org/archives/tag/postgresql/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.1783.org</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:44:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Linux ホスト上の PostgreSQL を C# から扱ってみるテスト(その1)</title>
		<link>http://blog.1783.org/archives/1799</link>
		<comments>http://blog.1783.org/archives/1799#comments</comments>
		<pubDate>Fri, 22 May 2009 12:30:14 +0000</pubDate>
		<dc:creator>tetsuo</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.1783.org/?p=1799</guid>
		<description><![CDATA[お仕事で c# からPostgreSQL 上のデータを扱う可能性があるのでちょっと手をつけてみる。 ■テスト機にPostgreSQLサーバ導入 /var/lib/pgsql/data/pg_hba.conf を書き換え( [...]]]></description>
			<content:encoded><![CDATA[<p>お仕事で c# からPostgreSQL 上のデータを扱う可能性があるのでちょっと手をつけてみる。</p>
<p>■テスト機にPostgreSQLサーバ導入</p>
<p>/var/lib/pgsql/data/pg_hba.conf を書き換え(暫定)<br />
[bash]<br />
local   all     all                     trust<br />
host    all     all     172.0.0.0/8     trust<br />
[/bash]</p>
<p>/var/lib/pgsql/data/postgresql.conf を書き換え</p>
<p>[bash]<br />
listen_addresses = &#8216;*&#8217;<br />
[/bash]</p>
<p>設定リロード<br />
[bash]<br />
pg_ctl reload<br />
[/bash]</p>
<p>テスト用DBユーザ作成<br />
[bash]<br />
createuser sample<br />
Shall the new role be a superuser? (y/n) n<br />
Shall the new role be allowed to create databases? (y/n) n<br />
Shall the new role be allowed to create more new roles? (y/n) n<br />
CREATE ROLE<br />
[/bash]</p>
<p>テスト用DB作成<br />
[bash]<br />
createdb sampledb<br />
[/bash]</p>
<p>テスト用テーブル作成<br />
[bash]<br />
psql sampledb<br />
CREAT TABLE sampletable (id serial,name text);<br />
GRANT ALL ON sampletable_id_seq TO sample ;<br />
[/bash]</p>
<p>テストユーザにテスト用テーブルへのアクセス権限をフルで与える<br />
[bash]<br />
grant ALL ON sampletable TO sample;<br />
[/bash]</p>
<p>別のLinux機から接続テスト<br />
[bash]<br />
psql -h ＜ホスト名＞ -U sample -d sampledb<br />
[/bash]</p>
<p>Linux 側(というかPostgreSQL側)の作業はここで一段落。<br />
ここからは c# 側。</p>
<p>概ね方向は2系統。ODBCを使うか、npgsql を使うか。なんか、pgOLEDB.dll というものもあるらしい。よーわからん。<br />
とりあえずnpgsqlを、<br />
<a href="http://www.postgresql.jp/document/NPGSQL/manual/UserManual_J.htm">http://www.postgresql.jp/document/NPGSQL/manual/UserManual_J.htm</a><br />
を参考にしながら試してみる。</p>
<p><a href="http://pgfoundry.org/frs/?group_id=1000140">http://pgfoundry.org/frs/?group_id=1000140</a><br />
から Npgsql2.0.5-bin-ms.net3.5sp1.zip を入手。<br />
展開して、適当なところにおいておく。とりあえずC:npgsqlにおいてみた。</p>
<p>C:Program FilesMicrosoft SDKsWindowsv6.0Abin<br />
にある<br />
gacutil.exe<br />
をつかって<br />
gacutil -i C:npgsqlbinNpgsql.dll<br />
しておく。</p>
<p>まずはコンソールアプリケーションで試してみる。<br />
Vc#2008でコンソールアプリケーションを新規作成。</p>
<p>頭の using が並んでいるところに<br />
using System.Data;<br />
using Npgsql;<br />
を追加。</p>
<p>ぐは、ビルドしてみたらうごかねー。</p>
<pre>
エラー	1	型または名前空間名 'Npgsql' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。	C:UsersXXXXXAppDataLocalTemporary ProjectsConsoleApplication1Program.cs	6	7	ConsoleApplication1
</pre>
<p>なので、プロジェクト→参照の追加→参照で、C:npgsqlbinNpgsql.dll を追加しておく。</p>
<p>これで「デバッグ開始」でエラーは出なくなった。</p>
<p>この時点でのソースはこんな感じ。<br />
[csharp]<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Data;<br />
using Npgsql;</p>
<p>namespace ConsoleApplication1<br />
{<br />
    class Program<br />
    {<br />
        static void Main(string[] args)<br />
        {<br />
        }<br />
    }<br />
}<br />
[/csharp]</p>
<p>んでもってMainの中に、接続のための処理を書いておく。全体はこんな感じ。</p>
<p>[csharp]<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Data;<br />
using Npgsql;</p>
<p>namespace ConsoleApplication1<br />
{<br />
    class Program<br />
    {<br />
        public static void Main(String[] args)<br />
        {<br />
            NpgsqlConnection conn = new NpgsqlConnection(&quot;Server=＜サーバのIPアドレス＞;Port=5432;User Id=sample;Database=sampledb;&quot;);<br />
            conn.Open();<br />
            conn.Close();<br />
        }</p>
<p>    }<br />
}<br />
[/csharp]</p>
<p>■テーブルに行を追加する処理<br />
※デバッグが終了してしまわないように確認画面を入れた。<br />
[csharp]<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Data;<br />
using Npgsql;</p>
<p>namespace ConsoleApplication1<br />
{<br />
    class Program<br />
    {<br />
        public static Int32 rowsaffected; // Mainの中においておいたらエラーが出たのでサンプルから変更。</p>
<p>        public static void Main(String[] args)<br />
        {<br />
            NpgsqlConnection conn = new NpgsqlConnection(&quot;Server=＜サーバのIPアドレス＞;Port=5432;User Id=sample;Database=sampledb;&quot;);<br />
            conn.Open();<br />
            Console.WriteLine(conn.State);</p>
<p>            NpgsqlCommand command = new NpgsqlCommand(&quot;insert into sampletable (name) values(&#8216;TEST OK&#8217;)&quot;, conn);</p>
<p>            try<br />
            {<br />
                rowsaffected = command.ExecuteNonQuery();<br />
            }</p>
<p>            catch<br />
            {<br />
                Console.WriteLine(&quot;It was added {0} lines in table table1&quot;, rowsaffected);</p>
<p>            }</p>
<p>            finally<br />
            {<br />
                conn.Close();<br />
            }</p>
<p>            # if DEBUG<br />
            Console.WriteLine(&quot;続行するには何かキーを押してください・・・&quot;);<br />
            Console.ReadKey();<br />
            # endif<br />
        }</p>
<p>    }<br />
}<br />
[/csharp]</p>
<p>おおおおお、追加されてるよ。ナイスだ。</p>
<p>■単一の結果が返ってくるものを取得する<br />
[csharp]<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Data;<br />
using Npgsql;</p>
<p>namespace ConsoleApplication1<br />
{<br />
    class Program<br />
    {<br />
        public static void Main(String[] args)<br />
        {<br />
            NpgsqlConnection conn = new NpgsqlConnection(&quot;Server=＜サーバのIPアドレス＞;Port=5432;User Id=sample;Database=sampledb;&quot;);<br />
            conn.Open();<br />
            Console.WriteLine(conn.State);</p>
<p>            NpgsqlCommand command = new NpgsqlCommand(&quot;select version()&quot;, conn);<br />
            string serverVersion;</p>
<p>            try<br />
            {<br />
                serverVersion = (String)command.ExecuteScalar();<br />
                Console.WriteLine(&quot;PostgreSQL server version: {0}&quot;, serverVersion); // これはtry の中に入れてやらないとエラーになった<br />
            }</p>
<p>            finally<br />
            {<br />
                conn.Close();<br />
            }</p>
<p>            # if DEBUG<br />
            Console.WriteLine(&quot;続行するには何かキーを押してください・・・&quot;);<br />
            Console.ReadKey();<br />
            # endif<br />
        }</p>
<p>    }<br />
}<br />
[/csharp]</p>
<p>■全ての問い合わせ結果を取得する<br />
データ的に多少面白くなるようにテーブルを用意しておく。<br />
＜Linux側作業＞<br />
[bash]<br />
CREATE TABLE sampletable2 (name text, yomi text, address text);<br />
INSERT INTO sampletable2 VALUES (&#8216;パンツェッタ 幸平&#8217;,'ぱんつぇった こうへい&#8217;,'panzetta_kouhei@example.com&#8217;);<br />
INSERT INTO sampletable2 VALUES (&#8216;村松 沙知絵&#8217;,'むらまつ さちえ&#8217;,'muramatsu_sachie@example.com&#8217;);<br />
INSERT INTO sampletable2 VALUES (&#8216;田代 恵望子&#8217;,'たしろ えみこ&#8217;,'tashiro_emiko@example.com&#8217;);<br />
INSERT INTO sampletable2 VALUES (&#8216;中島 璃子&#8217;,'なかしま りこ&#8217;,'nakashima_riko@example.com&#8217;);<br />
INSERT INTO sampletable2 VALUES (&#8216;畑中 恵梨香&#8217;,'はたなか えりか&#8217;,'hatanaka_erika@example.com&#8217;);<br />
grant ALL ON sampletable2 TO sample ;<br />
[/bash]</p>
<p>この手のサンプルデータを作るのは <a href="http://kazina.com/dummy/">http://kazina.com/dummy/</a> の「なんちゃって個人情報」さんが便利。</p>
<p>ソースはこんな感じ。<br />
[csharp]<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Data;<br />
using Npgsql;</p>
<p>namespace ConsoleApplication1<br />
{<br />
    class Program<br />
    {<br />
        public static void Main(String[] args)<br />
        {<br />
            NpgsqlConnection conn = new NpgsqlConnection(&quot;Server=＜サーバのIPアドレス＞;Port=5432;User Id=sample;Database=sampledb;&quot;);<br />
            conn.Open();<br />
            Console.WriteLine(conn.State);</p>
<p>            NpgsqlCommand command = new NpgsqlCommand(&quot;select * from sampletable2&quot;, conn);</p>
<p>            try<br />
            {<br />
                NpgsqlDataReader dr = command.ExecuteReader();<br />
                int i;<br />
                while (dr.Read())<br />
                {<br />
                    for (i = 0; i &lt; dr.FieldCount; i++)<br />
                    {<br />
                        Console.Write(&quot;{0} t&quot;, dr[i]);<br />
                    }<br />
                    Console.WriteLine();<br />
                }<br />
            }</p>
<p>            finally<br />
            {<br />
                conn.Close();<br />
            }</p>
<p>            # if DEBUG<br />
            Console.WriteLine(&quot;続行するには何かキーを押してください・・・&quot;);<br />
            Console.ReadKey();<br />
            # endif<br />
        }</p>
<p>    }<br />
}<br />
[/csharp]</p>
<p>でもってこれをGUIの画面にしたときにどうやってDataGridViewに表示するのかがいまいちわかってないけど、それは又今度。とりあえずデータの出し入れはわかったので今日はここまで。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.1783.org/archives/1799/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>APC (Alternative PHP Cachee) を試す</title>
		<link>http://blog.1783.org/archives/1668</link>
		<comments>http://blog.1783.org/archives/1668#comments</comments>
		<pubDate>Tue, 13 Jan 2009 03:45:01 +0000</pubDate>
		<dc:creator>tetsuo</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.1783.org/?p=1668</guid>
		<description><![CDATA[http://www.ideaxidea.com/archives/2009/01/php_apc.html をみてちょっと試してみる気になりました。 とりあえず、CentOS5.2 をほぼ最小構成(インストールタイプは [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ideaxidea.com/archives/2009/01/php_apc.html">http://www.ideaxidea.com/archives/2009/01/php_apc.html</a><br />
をみてちょっと試してみる気になりました。</p>
<p>とりあえず、CentOS5.2 をほぼ最小構成(インストールタイプはserver。その後、PHP と PostgreSQL とmySQL をインストールしたくらい)で入れた状態からやった作業。</p>
<h3>プロクシの設定</h3>
<p>試した環境の場合、プロクシの内側なので以下の設定が必要。</p>
<blockquote><p>pear config-set http_proxy http://XXXX.XXXX.XXX.XXX:NNNN (NNNNはポート番号)</p></blockquote>
<p>設定内容の確認</p>
<blockquote><p>pecl config-show</p></blockquote>
<h3>必要なパッケージと本体のインストール</h3>
<blockquote><p>
yum install php-devel gcc httpd-devel<br />
pecl install APC
</p></blockquote>
<h3>php.ini に以下の行を追加</h3>
<blockquote><p>
extension=apc.so
</p></blockquote>
<h3>Apache 再起動</h3>
<blockquote><p>service httpd restart
</p></blockquote>
<p>うん、かなり軽くなった気がする。元の状態でのベンチマークとっておけばよかったな。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.1783.org/archives/1668/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL Conference 2006</title>
		<link>http://blog.1783.org/archives/1177</link>
		<comments>http://blog.1783.org/archives/1177#comments</comments>
		<pubDate>Tue, 24 Jan 2006 04:00:46 +0000</pubDate>
		<dc:creator>tetsuo</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://www.1783.org/blog/?p=1177</guid>
		<description><![CDATA[PostgreSQL Conference 2006 が開催されるそうです。とりあえず参加予定。 講演内容もなんか非常に面白そう。楽しみだぁ。]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.postgresql.jp/misc/seminar/2006-02-17_18/index.html'>PostgreSQL Conference 2006</a><br />
が開催されるそうです。とりあえず参加予定。</p>
<p>講演内容もなんか非常に面白そう。楽しみだぁ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.1783.org/archives/1177/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

