メイン

2006年10月10日

DB定義書出力プログラム

Perlモジュールを使ってエクセルファイルを作ります
ソースはこんな感じ。
設定を変えればPostgreSQL, MySQL 両方で使えます

#!C:\Perl\bin\perl
#!/usr/local/bin/perl

use strict;
use DBI;
use Jcode;
use Spreadsheet::WriteExcel;
use DBIx::DBSchema;

#設定
my $DSN = 'dbi:mysql:DB名:サーバー名';
my $DB_USER = 'ユーザー名';
my $DB_PASSWD = 'パスワード';
my $XLS_FILE = '出力ファイル名';

my $dbh = DBI->connect($DSN, $DB_USER, $DB_PASSWD) or die $DBI::errstr;
my $xls = Spreadsheet::WriteExcel->new($XLS_FILE);
my $schema = new_native DBIx::DBSchema $dbh;

for my $table ($schema->tables()) {
my $work = $xls->addworksheet("$table");

$work->write(0, 0, 'INDEXES');
my $index_ref = $dbh->selectall_arrayref("SHOW INDEX FROM $table");
write_worksheet($work, $index_ref, 1);

$work->write(3 + $#{$index_ref}, 0, 'COLUMNS');
my $column_ref = $dbh->selectall_arrayref("DESCRIBE $table");
write_worksheet($work, $column_ref, 4 + $#{$index_ref});
}

$dbh->disconnect;


sub write_worksheet {
my($work, $ref, $offset) = @_;
for my $row (0 .. $#{$ref}) {
for my $col (0 .. $#{$ref->[$row]}) {
$work->write($row + $offset, $col, $ref->[$row]->[$col]);
}
}
}

2006年10月04日

テーブル単位のdump

pg_dump -t TABLE_NAME DB_NAME > dump.out

2006年06月03日

phpPgAdminインストール

PostgreSQLの管理をブラウザから行えるというツールです。PHPでできています。
http://phppgadmin.sourceforge.net/ ここから最新版をダウンロードします

展開後、phpPgAdmin-4.0.1conf/config.inc.php 編集
phpMyAdmin と違ってID,PASSを設定ファイルに書く必要はありません。
編集すべき点はわずか
$conf['servers'][0]['host'] = 'DBサーバーのIPアドレス';
$conf['extra_login_security'] = true;
 ID,PASSにroot,administrator,postgresなどありきたりなものを使っている場合は false にする

基本的にここだけでOKです サーバーにアップロード

例のごとくBasic認証をかけます
Alias /pgadmin/ "/usr/local/phpPgAdmin/"

Options -Indexes FollowSymLinks MultiViews Includes ExecCGI
AcceptPathInfo On
AllowOverride All
Allow from all


これで http://ホスト/pgadmin/ でアクセスできるようになります。

その後、htpasswd -c /usr/local/apache2/conf/.htpasswd ユーザー名
パスワード入力  でパスワードファイル作成
               *ユーザー名、パスワードは任意
/usr/local/phpPgAdmin/に .htaccess ファイル作成

touch .htaccess
vi .htaccess
【記述内容】
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
Require valid-user

chmod 666 /usr/local/apache2/conf/.htpasswd
/usr/local/apache2/bin/apachectl restart

これで認証がついたphpPgAdminが使えるはずです