<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: postgresql code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 23:22:14 GMT</pubDate>
    <description>DZone Snippets: postgresql code</description>
    <item>
      <title>TSearch2 - Upgrade PostgreSQL 8.1 to 8.3</title>
      <link>http://snippets.dzone.com/posts/show/5638</link>
      <description>I had terrible trouble getting my tsearch to work after migrating from 8.1 to 8.3.  If you are getting errors like:&lt;br /&gt;&lt;br /&gt;ERROR:  text search configuration "default" does not exist&lt;br /&gt;&lt;br /&gt;you need to create a "default" configuration.  &lt;br /&gt;Use the following to get a list of configurations:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;postgres=# \dF&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now create a configuration copying it from the language configuration of your choice like so:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;postgres=# CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 12 Jun 2008 02:34:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5638</guid>
      <author>k1mmeh (Kim Chirnside)</author>
    </item>
    <item>
      <title>Ruby on Rails - PostgreSQL Foreign Keys</title>
      <link>http://snippets.dzone.com/posts/show/5568</link>
      <description>To utilise foreign keys in my database while still using the super tidy Rails migrations, I created these migration helpers to CREATE and DROP foreign keys.  NOTE: this was written for a PostgreSQL database so it will likely not work on other DBs.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  def foreign_key(from_table, from_column, to_table)&lt;br /&gt;    constraint_name = "fk_#{from_table}_#{from_column}"&lt;br /&gt;    &lt;br /&gt;    execute %{ALTER TABLE #{from_table}&lt;br /&gt;              ADD CONSTRAINT #{constraint_name}&lt;br /&gt;              FOREIGN KEY (#{from_column})&lt;br /&gt;              REFERENCES #{to_table}(id)}&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def drop_foreign_key(from_table, from_column, to_table)&lt;br /&gt;    constraint_name = "fk_#{from_table}_#{from_column}"&lt;br /&gt;    &lt;br /&gt;    execute %{ALTER TABLE #{from_table}&lt;br /&gt;              DROP CONSTRAINT #{constraint_name}}&lt;br /&gt;  end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 02 Jun 2008 10:11:59 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5568</guid>
      <author>k1mmeh (Kim Chirnside)</author>
    </item>
    <item>
      <title>Project Schema</title>
      <link>http://snippets.dzone.com/posts/show/4751</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;CREATE TABLE passenger (id serial NOT NULL, nickname character varying(255) NOT NULL, description text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE location (id serial NOT NULL, name character varying(255), latitude double precision, longitude double precision);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 13 Nov 2007 21:41:43 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4751</guid>
      <author>tmcw ()</author>
    </item>
    <item>
      <title>Project Schema</title>
      <link>http://snippets.dzone.com/posts/show/4750</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;CREATE TABLE passenger (id serial NOT NULL, nickname character varying(255) NOT NULL, description text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE location (id serial NOT NULL, name character varying(255), latitude double precision, longitude double precision);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 13 Nov 2007 21:41:19 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4750</guid>
      <author>tmcw ()</author>
    </item>
    <item>
      <title>Project Schema</title>
      <link>http://snippets.dzone.com/posts/show/4749</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;CREATE TABLE passenger (id serial NOT NULL, nickname character varying(255) NOT NULL, description text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE location (id serial NOT NULL, name character varying(255), latitude double precision, longitude double precision);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 13 Nov 2007 21:41:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4749</guid>
      <author>tmcw ()</author>
    </item>
    <item>
      <title>Setting up Ruby On Rails with PostgreSQL on Mac OS X 10.4.9</title>
      <link>http://snippets.dzone.com/posts/show/4187</link>
      <description>This is a modified version of the &lt;a href="http://wiki.rubyonrails.org/rails/pages/Tutorial"&gt;Ruby on Rails Tutorial&lt;/a&gt; (&lt;a href="http://wiki.rubyonrails.org/rails/pages/TutorialStepOne"&gt;TutorialStepOne&lt;/a&gt;, &lt;a href="http://wiki.rubyonrails.org/rails/pages/TutorialStepOnePostgresql"&gt;TutorialStepOnePostgresql&lt;/a&gt;, ...).&lt;br /&gt;&lt;br /&gt;Log in to an admin user account and, if necessary, fix your command search path in $HOME/.bash_profile, $HOME/.bash_login or $HOME/.profile to include "/usr/local" and "/usr/local/sbin" (cf. &lt;a href="http://hivelogic.com/narrative/articles/using_usr_local"&gt;Using /usr/local &gt; Set The Path&lt;/a&gt;; echo $PATH | tr ":" "\n"). If there are no such files, just create them: touch $HOME/.bash_login &amp;&amp; touch $HOME/.bashrc (ls -a | grep \.bash).&lt;br /&gt;&lt;br /&gt;To avoid RubyGems loading issues it's no bad idea to add  &lt;a href="http://rubygems.org/read/chapter/3"&gt;export RUBYOPT=rubygems&lt;/a&gt;  to your $HOME/.bash_login file as well.&lt;br /&gt;&lt;br /&gt;If you want your system path changes to take effect not only for you you can modify the global system path settings in the systemwide initialization files /private/etc/profile and /private/etc/bashrc accordingly.&lt;br /&gt;&lt;br /&gt;To fix the paths of installed manual pages add the lines "MANPATH /usr/local/share/man" and "MANPATH /usr/local/man" to sudo nano +45 /usr/share/misc/man.conf (man -w | tr ":" "\n").&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(USE THE FOLLOWING AT YOUR OWN RISK!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REQUIREMENTS:&lt;br /&gt;&lt;br /&gt;I.     &lt;a href="http://developer.apple.com/tools/xcode/index.html"&gt;Xcode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;II.    PostgreSQL Database Server&lt;br /&gt;&lt;br /&gt;Install this &lt;a href="http://www.entropy.ch/software/macosx/postgresql/"&gt;PostgreSQL Database Server&lt;/a&gt; package.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# test after installation&lt;br /&gt;which psql     # /usr/local/bin/psql&lt;br /&gt;psql --version     # psql (PostgreSQL) 8.2.3, contains support for command-line editing&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Alternative installation: &lt;a href="http://brilliantcorners.org/node/84"&gt;Getting PostgreSQL running for Rails on a Mac&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;III.   Ruby 1.8.6, Ruby On Rails 1.2.3 &amp; Mongrel 1.0.1&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx"&gt;Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To install both Mongrel &amp; Mongrel Cluster use: sudo gem install -y mongrel mongrel_cluster (cf. &lt;a href="http://mongrel.rubyforge.org/docs/mongrel_cluster.html"&gt;Using Mongrel Cluster&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# test after installation&lt;br /&gt;ruby -v     # ruby 1.8.6&lt;br /&gt;rails -v     # Rails 1.2.3&lt;br /&gt;gem list     # ... mongrel (1.0.1) ...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IV. &lt;a href="http://rubyforge.org/projects/ruby-postgres/"&gt;ruby-postgres&lt;/a&gt; 0.7.1&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo gem install -y ruby-postgres&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As an alternative you may try &lt;a href="http://www.dotrb.com/2007/3/25/ruby-on-rails-installer-script-for-mac-osx"&gt;Ruby on rails installer script for Mac OSX&lt;/a&gt; or choose to install via MacPorts as described in &lt;a href="http://www.robbyonrails.com/articles/2007/06/19/installing-ruby-on-rails-and-postgresql-on-os-x-second-edition"&gt;Installing Ruby on Rails and PostgreSQL on OS X, Second Edition&lt;/a&gt; or &lt;a href="http://blog.nanorails.com/articles/2006/10/17/installing-rails-on-mac-os-x-tiger-10-4-8"&gt;Installing Rails on Mac OS X Tiger (10.4.8)&lt;/a&gt;. However, you then may have to change your system paths mentioned above &lt;a href="http://www.railsontherun.com/2007/5/9/installing-postgresql-on-mac"&gt;accordingly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. create a database server&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;# first create a directory called PostgreSQL-db on your Desktop&lt;br /&gt;mkdir -p $HOME/Desktop/PostgreSQL-db&lt;br /&gt;&lt;br /&gt;# create a new db server called railsdb&lt;br /&gt;/usr/local/bin/initdb -E UTF8 -D $HOME/Desktop/PostgreSQL-db/railsdb&lt;br /&gt;&lt;br /&gt;# START DB SERVER&lt;br /&gt;dir="$HOME/Desktop/PostgreSQL-db"; /usr/local/bin/pg_ctl -D $dir/railsdb -l $dir/railsdb/postgres.log start&lt;br /&gt;&lt;br /&gt;# STOP DB SERVER&lt;br /&gt;#dir="$HOME/Desktop/PostgreSQL-db"; /usr/local/bin/pg_ctl -D $dir/railsdb -l $dir/railsdb/postgres.log stop -m smart&lt;br /&gt;&lt;br /&gt;# check&lt;br /&gt;cat $HOME/Desktop/PostgreSQL-db/railsdb/pg_hba.conf&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;   # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD&lt;br /&gt;&lt;br /&gt;   # "local" is for Unix domain socket connections only&lt;br /&gt;   local   all         all                               trust&lt;br /&gt;   # IPv4 local connections:&lt;br /&gt;   host    all         all         127.0.0.1/32          trust&lt;br /&gt;   # IPv6 local connections:&lt;br /&gt;   host    all         all         ::1/128               trust&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2. create PostgreSQL database&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;createdb `whoami`_development&lt;br /&gt;#dropdb `whoami`_development&lt;br /&gt;&lt;br /&gt;createdb `whoami`_test&lt;br /&gt;#dropdb `whoami`_test&lt;br /&gt;&lt;br /&gt;#createdb `whoami`_production&lt;br /&gt;#dropdb `whoami`_production&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;3. set up your Rails project&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;cd $HOME/Desktop/RubyOnRails-projects&lt;br /&gt;rails -d postgresql `whoami`&lt;br /&gt;cd `whoami`&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;4. edit /config/database.yml&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/config/database.yml&lt;br /&gt;&lt;br /&gt;# just uncomment the following line&lt;br /&gt;#encoding: UTF8 &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;5. make Rails &amp; PostgreSQL work together&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;cd $HOME/Desktop/RubyOnRails-projects/`whoami`&lt;br /&gt;&lt;br /&gt;ruby script/generate migration People&lt;br /&gt;&lt;br /&gt;# edit /db/migrate/001_people.rb&lt;br /&gt;# cf. http://wiki.rubyonrails.org/rails/pages/TutorialStepOneMigrations&lt;br /&gt;&lt;br /&gt;open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/db/migrate/001_people.rb&lt;br /&gt;&lt;br /&gt; class People &lt; ActiveRecord::Migration&lt;br /&gt;&lt;br /&gt;    def self.up&lt;br /&gt;      create_table :people do |table|&lt;br /&gt;      # note that "id" is added implicitly, by default&lt;br /&gt;        table.column :name, :string&lt;br /&gt;        table.column :street1, :string&lt;br /&gt;        table.column :street2, :string&lt;br /&gt;        table.column :city, :string&lt;br /&gt;        table.column :state, :string&lt;br /&gt;        table.column :zip, :string&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    def self.down&lt;br /&gt;      drop_table :people &lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rake db:migrate&lt;br /&gt;&lt;br /&gt;ruby script/generate model Person  &lt;br /&gt;&lt;br /&gt;#open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/app/models/person.rb  # file will be explained below&lt;br /&gt;&lt;br /&gt;ruby script/console&lt;br /&gt;&lt;br /&gt;&gt;&gt; ...&lt;br /&gt;        entry = Person.new&lt;br /&gt;        entry.name = "Name" &lt;br /&gt;        entry.street1 = "123 Somwhere" &lt;br /&gt;        entry.street2 = "" &lt;br /&gt;        entry.city = "Smallville" &lt;br /&gt;        entry.state = "KS" &lt;br /&gt;        entry.zip = "123456" &lt;br /&gt;        entry.save&lt;br /&gt;        exit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# check newly created db table&lt;br /&gt;&lt;br /&gt;psql `whoami`_development&lt;br /&gt;SELECT * FROM people;&lt;br /&gt;\q&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# test&lt;br /&gt;rake      # ... 0 failures, 0 errors&lt;br /&gt;&lt;br /&gt;# create new controller&lt;br /&gt;ruby script/generate controller People list view new edit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# edit /app/controllers/people_controller.rb&lt;br /&gt;open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/app/controllers/people_controller.rb&lt;br /&gt;&lt;br /&gt;  def view&lt;br /&gt;   @person = Person.find(1)&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# edit /app/views/people/view.rhtml&lt;br /&gt;open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/app/views/people/view.rhtml&lt;br /&gt;&lt;br /&gt;# copy &amp; paste &amp; uncomment the following lines&lt;br /&gt;&lt;br /&gt;#&lt;html&gt;&lt;br /&gt;#  &lt;body&gt;&lt;br /&gt;#    &lt;h1&gt;People#view&lt;/h1&gt;&lt;br /&gt;#    &lt;p&gt;This page will display one person.&lt;/p&gt;&lt;br /&gt;#    &lt;p&gt;&lt;br /&gt;#    &lt;%= @person.name %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;%= @person.street1 %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;%= @person.street2 %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;%= @person.city %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;%= @person.state %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;%= @person.zip %&gt;&lt;br /&gt;&lt;br /&gt;#    &lt;/p&gt;&lt;br /&gt;#  &lt;/body&gt;&lt;br /&gt;#&lt;/html&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# the file /app/models/person.rb explained (see above)&lt;br /&gt;# open -e $HOME/Desktop/RubyOnRails-projects/`whoami`/app/models/person.rb&lt;br /&gt;&lt;br /&gt;# class Person &lt; ActiveRecord::Base&lt;br /&gt;# end&lt;br /&gt;&lt;br /&gt;# How does this know to map to the people table we created? ActiveRecord pluralizes the class name and looks for that &lt;br /&gt;# table in the database. This doesn&#8217;t just mean adding an &#8217;s&#8217;. Irregular plural forms are also handled, so Rails knows &lt;br /&gt;# that the plural of &#8216;person&#8217; is &#8216;people&#8217;. The rules for how it does this are described in the documentation&lt;br /&gt;# (see http://wiki.rubyonrails.org/rails/pages/TutorialStepSix).&lt;br /&gt;&lt;br /&gt;# test&lt;br /&gt;rake&lt;br /&gt;&lt;br /&gt;# start your Rails app&lt;br /&gt;cd $HOME/Desktop/RubyOnRails-projects/`whoami`&lt;br /&gt;&lt;br /&gt;ruby script/server&lt;br /&gt;#ruby script/server --environment=development&lt;br /&gt;&lt;br /&gt;# open a second shell window and go to ...  &lt;br /&gt;open -a Safari http://localhost:3000/people/view&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 21 Jun 2007 21:25:53 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4187</guid>
      <author>ntk ()</author>
    </item>
    <item>
      <title>PostgreSQL: generate DDL to alter views with dependencies</title>
      <link>http://snippets.dzone.com/posts/show/4038</link>
      <description>Determine dependencies on given table/view or their columns, types (base/domain/composite), functions, rules and show DROP/ALTER/CREATE series to update their definitions.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/ruby -W0&lt;br /&gt;#&lt;br /&gt;# This script tries to determine all dependencies on given table/view or their columns, &lt;br /&gt;# types (base/domain/composite), functions, rules.&lt;br /&gt;#&lt;br /&gt;# Usage:&lt;br /&gt;#       ruby show_obj_deps conn_string object_id alter_stmt &lt;br /&gt;# e.g:&lt;br /&gt;#       ruby show_obj_deps dbname=db1 "VIEW public.base_stats" "DROP VIEW public.base_stats; CREATE VIEW public.base_stats AS SELECT ..."&lt;br /&gt;#&lt;br /&gt;# Result will be series of DDL DROP statements for dependent objects, then alter_stmt, and&lt;br /&gt;# then series of DDL CREATE statements for dropped objects.&lt;br /&gt;#&lt;br /&gt;# Format of object_id:&lt;br /&gt;#   TABLE schema_name.table_name&lt;br /&gt;#   VIEW schema_name.view_name&lt;br /&gt;#   TABLE schema_name.table_name COLUMN column_name&lt;br /&gt;#   VIEW schema_name.view_name COLUMN column_name&lt;br /&gt;#   FUNCTION schema_name.func_name(type_1, type2, ...)&lt;br /&gt;#   RULE rule_name ON schema_name.obj_name&lt;br /&gt;#&lt;br /&gt;# This script is somewhat rewritten version of http://snippets.dzone.com/posts/show/2105&lt;br /&gt;#&lt;br /&gt;# Developed using PostgreSQL v8.0.3, v8.1 with ruby-postgres libpq binding&lt;br /&gt;# &lt;br /&gt;&lt;br /&gt;require 'postgres'&lt;br /&gt;require 'tsort'&lt;br /&gt;require 'pp'&lt;br /&gt;PGconn.translate_results = true&lt;br /&gt;&lt;br /&gt;$PG_CLASSES = {}&lt;br /&gt;class PgDependencyGraph            &lt;br /&gt;class DBObject&lt;br /&gt;  attr_accessor :row, :o_type, :nsp&lt;br /&gt;  def initialize(conn, class_id, obj_id, sub_id)&lt;br /&gt;    @o_type   = $PG_CLASSES[class_id]&lt;br /&gt;    @row   = conn.query(sql_for(@o_type, obj_id, sub_id)).first&lt;br /&gt;    @nsp = row['nsp']&lt;br /&gt;    if @o_type == 'pg_proc'&lt;br /&gt;      arg_types = row.last.split(" ")&lt;br /&gt;      unless arg_types.empty?&lt;br /&gt;        arg_type_names = arg_types.map {|oid| "format_type(#{oid}, -1)"}.join(", ")&lt;br /&gt;        row[-1] = "("+conn.query("SELECT #{arg_type_names}").first.join(", ") +")"&lt;br /&gt;      else &lt;br /&gt;	     row[-1] = "()"&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  def sql_for(pg_class, obj_id, sub_id)&lt;br /&gt;  base_sql = case pg_class &lt;br /&gt;    when 'pg_type' &lt;br /&gt;      "select       (case &lt;br /&gt;      	when typtype = 'b' then 'BASE '&lt;br /&gt;	when typtype = 'c' then 'COMPOSITE '&lt;br /&gt;	when typtype = 'd' then 'DOMAIN '&lt;br /&gt;	when typtype = 'p' then 'PSEUDO '&lt;br /&gt;      end) || coalesce( &lt;br /&gt;      (select (CASE WHEN relkind = 'r' THEN 'TABLE'&lt;br /&gt;            WHEN relkind = 'v' THEN 'VIEW'&lt;br /&gt;            WHEN relkind = 'i' THEN 'INDEX'&lt;br /&gt;            WHEN relkind = 'S' THEN 'SEQUENCE'&lt;br /&gt;            WHEN relkind = 's' THEN 'SPECIAL'&lt;br /&gt;            WHEN relkind = 't' THEN 'TOAST'&lt;br /&gt;	    WHEN relkind = 'c' THEN ' '&lt;br /&gt;        END) from pg_class c where c.oid = typrelid), ' '), &lt;br /&gt;(select nspname from pg_namespace n where n.oid = typnamespace) as nsp,       typname as obj_name,&lt;br /&gt;      #{sub_id} from pg_type  "&lt;br /&gt;    when 'pg_proc' &lt;br /&gt;      "select (select nspname from pg_namespace n where n.oid = pronamespace) as nsp, proname as obj_name, proargtypes from pg_proc "&lt;br /&gt;    when 'pg_class'&lt;br /&gt;      "select &lt;br /&gt;  (CASE WHEN relkind = 'r' THEN 'TABLE'&lt;br /&gt;            WHEN relkind = 'v' THEN 'VIEW'&lt;br /&gt;            WHEN relkind = 'i' THEN 'INDEX'&lt;br /&gt;            WHEN relkind = 'S' THEN 'SEQUENCE'&lt;br /&gt;            WHEN relkind = 's' THEN 'SPECIAL'&lt;br /&gt;            WHEN relkind = 't' THEN 'TOAST'&lt;br /&gt;        END) , (select nspname from pg_namespace n where n.oid = relnamespace) as nsp, &lt;br /&gt;       relname as obj_name,  &lt;br /&gt;      (select attname from pg_attribute where attrelid = #{obj_id} and attnum = #{sub_id}) from pg_class"&lt;br /&gt;    when 'pg_rewrite'&lt;br /&gt;      "select (select nspname from pg_namespace n where n.oid = (select relnamespace from pg_class c where c.oid = ev_class) ) as nsp, rulename, (select relname from pg_class c where c.oid = ev_class)  from pg_rewrite"&lt;br /&gt;    else&lt;br /&gt;        puts "IGNORE: #{pg_class}, #{obj_id}, #{sub_id}"&lt;br /&gt;        nil&lt;br /&gt;  end&lt;br /&gt;  base_sql = base_sql ? base_sql &lt;&lt; " WHERE oid = #{obj_id} ": nil&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt; &lt;br /&gt;  def to_s&lt;br /&gt;    case @o_type&lt;br /&gt;    	when 'pg_proc' : "FUNCTION #{@row[0]}.#{@row[1]}#{@row[2]}"&lt;br /&gt;      when 'pg_type': "TYPE: #{@row[0]} #{@row[1]}.#{@row[2]}"&lt;br /&gt;      when 'pg_class' : "#{@row[0]} #{@row[1]}.#{@row[2]}" + (row[3] ? " COLUMN #{@row[3]}" : "")&lt;br /&gt;      when 'pg_rewrite' :  @row[1] == '_RETURN' ? "VIEW #{@row[0]}.#{@row[2]}" : "RULE #{@row[1]} ON #{@row[0]}.#{@row[2]}"&lt;br /&gt;    end &lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;  attr_accessor :depend_graph&lt;br /&gt;    ACCEPTED = ['pg_type', 'pg_proc', 'pg_class', 'pg_rewrite']&lt;br /&gt;  def initialize(conn)&lt;br /&gt;    conn.query("select distinct classid, relname from pg_class c join pg_depend d on (c.oid = d.classid)").each do |row|&lt;br /&gt;      $PG_CLASSES[row['classid']] = row['relname']&lt;br /&gt;    end&lt;br /&gt;    conn.query("select distinct refclassid, relname from pg_class c join pg_depend d on (c.oid = d.refclassid)").each do |row|&lt;br /&gt;      $PG_CLASSES[row['refclassid']] = row['relname']&lt;br /&gt;    end&lt;br /&gt;    dep_graphs = {}&lt;br /&gt;    conn.query("SELECT * FROM pg_catalog.pg_depend   where  true or ( deptype&lt;&gt; 'i' and deptype &lt;&gt; 'p')").each do |row|&lt;br /&gt;    if ACCEPTED.include?($PG_CLASSES[row['classid']]) &amp;&amp; ACCEPTED.include?($PG_CLASSES[row['refclassid']])&lt;br /&gt;      this_obj = DBObject.new(conn, row['classid'], row['objid'], row['objsubid'])&lt;br /&gt;      that_obj = DBObject.new(conn, row['refclassid'], row['refobjid'], row['refobjsubid'])&lt;br /&gt;      #dep_string = this_obj.nsp !~ /^pg_toast$/ ? "\"#{this_obj.to_s}\" -&gt; \"#{that_obj.to_s}\"; \n" : nil&lt;br /&gt;      dep_string = this_obj.nsp !~ /^(information_schema|pg_catalog|pg_toast)$/  ? this_obj.to_s : nil&lt;br /&gt;    &lt;br /&gt;      if dep_string &amp;&amp; this_obj.to_s !~ /^INDEX /&lt;br /&gt;        dep_graphs[that_obj.to_s] ||=[]&lt;br /&gt;        dep_graphs[that_obj.to_s] &lt;&lt; dep_string&lt;br /&gt;        if that_obj.to_s =~ /^(VIEW|TABLE) (.+?) COLUMN /m&lt;br /&gt;          ds2 = that_obj.to_s.sub(/ COLUMN.*/m, '')&lt;br /&gt;          dep_graphs[ds2] ||=[]&lt;br /&gt;          dep_graphs[ds2] &lt;&lt; that_obj.to_s unless that_obj.to_s == ds2&lt;br /&gt;        elsif that_obj.to_s =~ /^TYPE: COMPOSITE (TABLE|VIEW) /&lt;br /&gt;          ds2 = that_obj.to_s.sub(/^TYPE: COMPOSITE (TABLE|VIEW) /, '\1 ')&lt;br /&gt;          dep_graphs[ds2] ||=[]&lt;br /&gt;          dep_graphs[ds2] &lt;&lt; that_obj.to_s unless that_obj.to_s == ds2&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  dep_graphs.each do |that, values|&lt;br /&gt;    values.uniq!&lt;br /&gt;    values.reject! {|item| item == that}&lt;br /&gt;  end&lt;br /&gt;  @depend_graph = dep_graphs&lt;br /&gt; end&lt;br /&gt; def list_dependencies(obj)&lt;br /&gt;    dep_list = []&lt;br /&gt;    if @depend_graph[obj]&lt;br /&gt;      @depend_graph[obj].each do |v|&lt;br /&gt;        k = list_dependencies(v)&lt;br /&gt;        k.empty? ? dep_list &lt;&lt; v : dep_list &lt;&lt; [v, k]&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    dep_list&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class DG&lt;br /&gt; include TSort&lt;br /&gt; def initialize(dep_graph, node_list)&lt;br /&gt;   @nodes = node_list&lt;br /&gt;   @dg = dep_graph&lt;br /&gt; end&lt;br /&gt; def tsort_each_node(&amp;block)&lt;br /&gt;   @nodes.each {|x| yield x}&lt;br /&gt; end&lt;br /&gt; def tsort_each_child(node, &amp;block)&lt;br /&gt;   (@dg[node]||[]).each(&amp;block)&lt;br /&gt; end&lt;br /&gt;end    &lt;br /&gt;&lt;br /&gt;class Function&lt;br /&gt;  attr_reader :typed_head&lt;br /&gt;  def initialize(conn, tuple)&lt;br /&gt;    @name = tuple['namespace'] + "." + tuple['function_name']&lt;br /&gt;    @language = tuple['language_name']&lt;br /&gt;    @src = tuple['source_code']&lt;br /&gt;    @returns_set = tuple['returns_set']&lt;br /&gt;    @return_type = format_type(conn, tuple['return_type'])&lt;br /&gt;    @tipes = tuple['function_args'].split(" ")&lt;br /&gt;    if tuple['function_arg_names'] &amp;&amp; tuple['function_arg_names'] =~ /^\{(.*)\}$/&lt;br /&gt;      @arnames = $1.split(',')&lt;br /&gt;    elsif tuple['function_arg_names'].is_a? Array&lt;br /&gt;      @arnames = tuple['function_arg_names']&lt;br /&gt;    else&lt;br /&gt;      @arnames = [""] * @tipes.length&lt;br /&gt;    end&lt;br /&gt;    alist = []&lt;br /&gt;    atypelist = [] &lt;br /&gt;    @tipes.each_with_index do |typ,idx|&lt;br /&gt;      ft = format_type(conn, typ)&lt;br /&gt;      alist &lt;&lt; (@arnames[idx] +" " + ft)&lt;br /&gt;      atypelist &lt;&lt; ft&lt;br /&gt;    end&lt;br /&gt;    @arglist = alist.join(" , ")&lt;br /&gt;    @strict = tuple['proisstrict'] ? ' STRICT' : ''&lt;br /&gt;    @secdef = tuple['prosecdef'] ? ' SECURITY DEFINER' : ''&lt;br /&gt;    @volatile = case tuple['provolatile']&lt;br /&gt;      when 'i' then ' IMMUTABLE'&lt;br /&gt;      when 's' then ' STABLE'&lt;br /&gt;      else ''&lt;br /&gt;    end&lt;br /&gt;    @typed_head = @name+"("+atypelist.join(", ")+")"&lt;br /&gt;  end&lt;br /&gt;  def signature&lt;br /&gt;    "#{@name}(#{@arglist})"&lt;br /&gt;  end&lt;br /&gt;  def definition&lt;br /&gt;    &lt;&lt;-EOT&lt;br /&gt;CREATE OR REPLACE FUNCTION #{@name} (#{@arglist}) RETURNS #{@returns_set ?  'SETOF' : ''} #{@return_type} AS $_$#{@src}$_$ LANGUAGE '#{@language}' #{@volatile}#{@strict}#{@secdef};&lt;br /&gt;EOT&lt;br /&gt;  end&lt;br /&gt;  def == (other)&lt;br /&gt;    definition == other.definition&lt;br /&gt;  end&lt;br /&gt;  def format_type(conn, oid)&lt;br /&gt;    t_query = &lt;&lt;-EOT&lt;br /&gt;    SELECT pg_catalog.format_type(pg_type.oid, typtypmod) AS type_name&lt;br /&gt;     FROM pg_catalog.pg_type&lt;br /&gt;     JOIN pg_catalog.pg_namespace ON (pg_namespace.oid = typnamespace)&lt;br /&gt;     WHERE pg_type.oid = &lt;br /&gt;    EOT&lt;br /&gt;    return conn.query(t_query + oid.to_s)[0][0]&lt;br /&gt;  end&lt;br /&gt;  def self.find(conn, schema, name, args)&lt;br /&gt;    func_query = &lt;&lt;-EOT&lt;br /&gt;     SELECT proname AS function_name&lt;br /&gt;     , nspname AS namespace&lt;br /&gt;     , lanname AS language_name&lt;br /&gt;     , pg_catalog.obj_description(pg_proc.oid, 'pg_proc') AS comment&lt;br /&gt;     , proargtypes AS function_args&lt;br /&gt;     , proargnames AS function_arg_names&lt;br /&gt;     , prosrc AS source_code&lt;br /&gt;     , proretset AS returns_set&lt;br /&gt;     , prorettype AS return_type,&lt;br /&gt;     provolatile, proisstrict, prosecdef&lt;br /&gt;     FROM pg_catalog.pg_proc&lt;br /&gt;     JOIN pg_catalog.pg_language ON (pg_language.oid = prolang)&lt;br /&gt;     JOIN pg_catalog.pg_namespace ON (pronamespace = pg_namespace.oid)&lt;br /&gt;     JOIN pg_catalog.pg_type ON (prorettype = pg_type.oid)&lt;br /&gt;     WHERE pg_namespace.nspname !~ 'pg_catalog|information_schema|pg_temp_'&lt;br /&gt;     AND nspname = $1&lt;br /&gt;     AND proname = $2&lt;br /&gt;     AND oidvectortypes(proargtypes) = $3&lt;br /&gt;    EOT&lt;br /&gt;&lt;br /&gt;    Function.new(conn, conn.query(func_query, schema, name, args).first)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;conn = PGconn.new(ARGV[0])&lt;br /&gt;graph = PgDependencyGraph.new(conn)&lt;br /&gt;#pp graph.list_dependencies(ARGV[1])&lt;br /&gt;dep_list = []&lt;br /&gt;ARGV[1].split(/\|/).each do |obj_id|&lt;br /&gt;  dep_list += graph.list_dependencies(obj_id).flatten.uniq&lt;br /&gt;end&lt;br /&gt;dep_list.uniq!&lt;br /&gt;&lt;br /&gt;top_sorted = DG.new(graph.depend_graph, dep_list).tsort&lt;br /&gt;top_sorted.each do |line|&lt;br /&gt;  case line&lt;br /&gt;        when /^TYPE:/, /^VIEW (\S+) COLUMN/; &lt;br /&gt;        when /^VIEW (.+)/ then puts "DROP VIEW #$1;"&lt;br /&gt;        when /^FUNCTION (.+)/ then puts "DROP FUNCTION #$1;"&lt;br /&gt;        when /^RULE / then puts "DROP "+line+";"&lt;br /&gt;        else &lt;br /&gt;        puts "-- SKIP #{line}"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts "", "--- ", "--- ALTER: ", "---"&lt;br /&gt;puts ARGV[2]&lt;br /&gt;puts "---", "---", ""&lt;br /&gt;def view_def(conn, name)&lt;br /&gt;  conn.select_value("SELECT pg_catalog.pg_get_viewdef('#{name}'::regclass, true)")&lt;br /&gt;end&lt;br /&gt;def rule_def(conn, tablename, rule_name)&lt;br /&gt; conn.select_value("select definition from pg_rules  where schemaname || '.' ||  tablename = $1  and rulename = $2", tablename, rule_name)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def func_def(conn, *args)&lt;br /&gt; Function.find(conn, *args).definition&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;top_sorted.reverse.each do |line|&lt;br /&gt;  case line&lt;br /&gt;        when /^TYPE:/, /^VIEW (\S+) COLUMN/ then puts "-- SKIP #{line}"&lt;br /&gt;        when /^VIEW (.+)/ then puts "CREATE VIEW #$1 AS "+view_def(conn, $1)&lt;br /&gt;        when /^FUNCTION (\w+)\.(\w+)\((.*)\)/ then puts func_def(conn, $1, $2, $3)&lt;br /&gt;        when /^RULE (.+) ON (.+)/ then puts "CREATE "+rule_def(conn, $2, $1)&lt;br /&gt;        else&lt;br /&gt;          puts "-- SKIP #{line}"&lt;br /&gt;  end&lt;br /&gt;  puts &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 17 May 2007 14:19:15 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4038</guid>
      <author>dseverin ()</author>
    </item>
    <item>
      <title>Dump postgres production data into development database</title>
      <link>http://snippets.dzone.com/posts/show/3958</link>
      <description>When bug requests come in, its great to grab a copy of the current production (or system test env) data and sync it into your development database.&lt;br /&gt;&lt;br /&gt;Here's a capistrano recipe for postgresql:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;desc "Dumps target database into development db"&lt;br /&gt;task :sync_db do&lt;br /&gt;  env   = ENV['RAILS_ENV'] || ENV['DB'] || 'production'&lt;br /&gt;  file  = "#{application}.sql.bz2"&lt;br /&gt;  remote_file = "#{shared}/log/#{file}"&lt;br /&gt;  run "pg_dump --clean --no-owner --no-privileges -U#{db_user} -h#{db_host} #{db_name}_#{env} | bzip2 &gt; #{file}" do |ch, stream, out|&lt;br /&gt;    ch.send_data "#{db_password}\n" if out =~ /^Password:/&lt;br /&gt;    puts out&lt;br /&gt;  end&lt;br /&gt;  puts rsync = "rsync #{user}@#{domain}:#{file} tmp"&lt;br /&gt;  `#{rsync}`&lt;br /&gt;  puts depackage = "bzcat tmp/#{file} | psql #{local_db_dev}"&lt;br /&gt;  `#{depackage}`&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 06 May 2007 09:00:17 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3958</guid>
      <author>nicwilliams (Dr Nic Williams)</author>
    </item>
    <item>
      <title>Populate PostgreSQL tables</title>
      <link>http://snippets.dzone.com/posts/show/3749</link>
      <description>This script in PHP populate with demo data tables Postgresql.&lt;br /&gt;It insert serious registers automatically in a table.&lt;br /&gt;Remove the primary key before run.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;/** Rotina para popular tabela do PostgreSQL com massa de testes&lt;br /&gt;  * Colabora&#231;&#227;o de Ribamar FS - http://ribafs.net - 14/03/2007&lt;br /&gt;  * Requer remo&#231;&#227;o da chave prim&#225;ia antes da execu&#231;&#227;o.&lt;br /&gt;  */ &lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Inserir Registros de Teste&lt;/title&gt;&lt;/head&gt;&lt;br /&gt;&lt;body bgcolor=''&gt;&lt;br /&gt;&lt;h2 align=center&gt;Cadastrar Tabela do PostgreSQL com Massa de Testes&lt;/h2&gt;&lt;br /&gt;&lt;h3 align=center&gt;&lt;font color=red&gt;Remova chave prim&#225;ia da tabela, antes de executar&lt;/font&gt;&lt;/h3&gt;&lt;br /&gt;&lt;h4 align=center&gt;Observe que nem todos os tipos de dados foram contemplados, alguns ficar&#227;o como string&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align=center&gt;&lt;br /&gt;&lt;form method='POST' name=frmIns action='popula_table_pg.php'&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Host&lt;/td&gt;&lt;td&gt;&lt;input type=text name='host' value='127.0.0.1'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Banco&lt;/td&gt;&lt;td&gt;&lt;input type=text name='banco' value='cliente'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Usu&#225;rio&lt;/td&gt;&lt;td&gt;&lt;input type=text name='usuario' value='postgres'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Senha&lt;/td&gt;&lt;td&gt;&lt;input type=text name='senha' value='postgres'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tabela&lt;/td&gt;&lt;td&gt;&lt;input type=text name='tabela' value='clientes'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Registros&lt;/td&gt;&lt;td&gt;&lt;input type=text name='registros' value=5&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=submit name='popular' value='Popular'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;if(isset($_POST['popular'])){&lt;br /&gt;	$host=$_POST['host'];&lt;br /&gt;	$banco=$_POST['banco'];&lt;br /&gt;	$usuario=$_POST['usuario'];&lt;br /&gt;	$senha=$_POST['senha'];&lt;br /&gt;	$tabela=$_POST['tabela'];&lt;br /&gt;	$registros=$_POST['registros'];&lt;br /&gt;&lt;br /&gt;	$conexao=pg_connect("host=$host user=$usuario password=$senha dbname=$banco port=5432");&lt;br /&gt;	if (!$conexao){&lt;br /&gt;		die('Erro ao conectar ao banco&lt;br&gt;'.pg_last_error($conexao));&lt;br /&gt;	}&lt;br /&gt;	$str="SELECT * FROM $tabela";&lt;br /&gt;	$consulta= pg_query($conexao,$str);&lt;br /&gt;	$nc=pg_num_fields($consulta);&lt;br /&gt;	$nr=pg_num_rows($consulta);&lt;br /&gt;&lt;br /&gt;   $n='';//numericos (int, tinyint, smallint, bigint, etc)&lt;br /&gt;   $r=''; //reais (float e double)&lt;br /&gt;   $s="'";//strings&lt;br /&gt;   $d=date('Y-m-d'); //datas&lt;br /&gt;   $dt=date('Y-m-d H:i:s');//datatimes&lt;br /&gt;   $o=''; //outros&lt;br /&gt;&lt;br /&gt;   	$inscod .="INSERT INTO $tabela (";&lt;br /&gt;   	for ($j = 0; $j &lt; $nc; $j++) {&lt;br /&gt;      $campo = pg_field_name($consulta, $j);&lt;br /&gt;		if ($j &lt; $nc-1)	$inscod .= "$campo,";&lt;br /&gt;     	else $inscod .= "$campo";&lt;br /&gt;	}&lt;br /&gt;	$inscod .= ")";	 &lt;br /&gt;    $inscod .= " VALUES (";&lt;br /&gt;&lt;br /&gt;   for ($j = 0; $j &lt; $nc; $j++) {   &lt;br /&gt;   $tam   = pg_field_size($consulta, $j);&lt;br /&gt;   if($tam == -1) $tam=20; //Caso queira limitar os campos ao m&#225;ximo de 20 posi&#231;es&lt;br /&gt;		if ($j &lt; $nc-1){ &lt;br /&gt;			switch (pg_field_type($consulta, $j)){&lt;br /&gt;				case 'int4':&lt;br /&gt;					$n=str_pad($n,$tam,'12345679890');&lt;br /&gt;					$inscod .= "$n,";&lt;br /&gt;					break;&lt;br /&gt;     			case 'float4':&lt;br /&gt;					$r=str_pad($r,$tam,'1234567890');&lt;br /&gt;					$inscod .= "$r,";&lt;br /&gt;					break;&lt;br /&gt;				case 'bpchar':&lt;br /&gt;				case 'varchar':&lt;br /&gt;					$s=str_pad($s,$tam,"abcdefghijklmnopqrstuvxyz");&lt;br /&gt;					$inscod .= "$s',";&lt;br /&gt;					break;&lt;br /&gt;				case 'date':&lt;br /&gt;		 		    $inscod .= "'$d',";&lt;br /&gt;					break;&lt;br /&gt;				case 'timestamp':&lt;br /&gt;					$inscod .= "'$dt',";&lt;br /&gt;					break;&lt;br /&gt;				case 'text':&lt;br /&gt;					$inscod .= "'$t'";&lt;br /&gt;					break;&lt;br /&gt;				default:&lt;br /&gt;					$o=str_pad($o,$tam,"abcdefghijklmnopqrstuvxyz");&lt;br /&gt;					$inscod .= "'$o',";&lt;br /&gt;					break;&lt;br /&gt;			}&lt;br /&gt;     	}else{&lt;br /&gt;     		switch (pg_field_type($consulta, $j)){&lt;br /&gt;				case 'int4':&lt;br /&gt;					$n=str_pad($n,$tam,'1234567890');&lt;br /&gt;					$inscod .= "$n";&lt;br /&gt;					break;&lt;br /&gt;     			case 'float4':&lt;br /&gt;					$r=str_pad($r,$tam,'1234567890');&lt;br /&gt;					$inscod .= "$r";&lt;br /&gt;					break;&lt;br /&gt;				case 'bpchar':&lt;br /&gt;				case 'varchar':&lt;br /&gt;					$s=str_pad($s,$tam,"abcdefghijklmnopqrstuvxyz");&lt;br /&gt;					$inscod .= "$s'";&lt;br /&gt;					break;&lt;br /&gt;				case 'date':&lt;br /&gt;					$inscod .= "'$d'";&lt;br /&gt;					break;&lt;br /&gt;				case 'timestamp':&lt;br /&gt;					$inscod .= "'$dt'";&lt;br /&gt;					break;&lt;br /&gt;				case 'text':&lt;br /&gt;					$inscod .= "'$t'";&lt;br /&gt;					break;&lt;br /&gt;				default:&lt;br /&gt;					$o=str_pad($o,$tam,"abcdefghijklmnopqrstuvxyz");&lt;br /&gt;					$inscod .= "'$o'";&lt;br /&gt;					break;&lt;br /&gt;     		}&lt;br /&gt;     	}&lt;br /&gt;     	&lt;br /&gt;	}&lt;br /&gt;    $inscod .=");";	&lt;br /&gt;	&lt;br /&gt;    for($r=1;$r&lt;=$registros;$r++){	   &lt;br /&gt;		//echo  $inscod;&lt;br /&gt;	   	if(!pg_query($conexao,$inscod)) die ("Erro na inclus&#227;&lt;br&gt;".pg_last_error($conexao));&lt;br /&gt;    }	   &lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 30 Mar 2007 15:06:16 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3749</guid>
      <author>ribafs (Ribamar FS)</author>
    </item>
    <item>
      <title>Abilitazione accesso remoto per PostgreSQL</title>
      <link>http://snippets.dzone.com/posts/show/3199</link>
      <description>// in "pg_hba.conf"&lt;br /&gt;&lt;code&gt;&lt;br /&gt;host    all         all         192.168.98.0/24       md5&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;// in "postgresql.conf"&lt;br /&gt;&lt;code&gt;&lt;br /&gt;listen_addresses = '*'		# what IP address(es) to listen on; &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Fri, 22 Dec 2006 15:51:26 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3199</guid>
      <author>morlandi (Mario Orlandi)</author>
    </item>
  </channel>
</rss>
