人気ブログランキング | 話題のタグを見る


thunderbirdで出力したLDIFファイルをwindowsメールでインポート

Thunderbirdで出力したLDIFファイルはそのままではVISTAのwindowsメールではインポートできません。
windowsメールがBASE64でエンコードされたUTF-8コードを読み込めない。
「dn::」レコードを「dn:」にしてSHIFT-JISに展開すればインポートできるようだ。
以下は変換用のRubyスクリプト。あんまりスマートじゃないけど。

require 'nkf'
require 'base64'
$KCONV="SJIS"

while line = ARGF.gets
line = line.chomp
if /([^:]+:): (.*)/ =~ line
$a = $1
$b = $2
buf = NKF.nkf("-Ws", Base64.decode64($b) )
buf = buf.gsub( '"', "" )
buf = $a + " " + buf
else
line = line.gsub( '"', "" )
buf = line
/([^:]+:)/ =~ buf
$a = $1
if $a == "dn:"
if /cn=/ !~ buf
/mail=(.*)/ =~ buf
buf = "dn: cn=" + $1 + ",mail=" + $1
cn = $1
$flg = 1
end
else
if /mail:/ =~ line and $flg == 1
print "cn: " + cn,"\n"
$flg = 0
end
buf = line
end
end
print buf,"\n"
end

# by nora1962 | 2009-09-24 05:53 | PC

Oracle Database Gateway for ODBC その2

Oracle Database Gateway for ODBC を少しいじってみた。
postgresqlのエントリを追加。

データ型のマッピング

SQLSERVER,Postgresqlとも
create table kkk
(
id int,
name varchar(20),
salary decimal(10,2)
)
で作成。これをORACLE側から見ると
DESC "dbo"."kkk"@mssql

id NUMBER(10)
name VARCHAR2(20)
salary NUMBER(10,2)

DESC "kkk"@postgresql

id NUMBER(10)
name VARCHAR(255)
salary NUMBER(10,2)

postgresqlの文字列型の表示がちょっとおかしい。これはpostgresqlのvarchar型がUTF-8対応
になっており文字数を表しているのにoracleはバイト数基準であるかららしい。
ちなみにpostgresqlで255桁指定まではORACLE側では255表示、それ以上はデータ型がLONG型表示になる。LONG型はoracleでは本来1テーブルに1フィールドしか指定できないが、この場合はoracle側で処理に制限を受けることはなさそう。あくまで見た目ということらしい。

データ操作(INSERT、DELETE、UPDATE)にはoracleの既定の動作と同様にトランザクションが有効になっている。

DELETE FROM "kkk"@postgresql;

と実行してもROLLBACKすればもとに復帰できる。
ただし、SELECT ... FOR UPDATE構文には対応していない。
また、INSERT INTO "kkk"@postgresql SELECT ... でORACLE側のテーブルのデータを一気に流し込むことはできないようだ。
逆にORACLE側に持ってくることはできる。

レスポンスもそんなに悪くはない。思ったよりも使える機能かもしれない。
# by nora1962 | 2009-09-17 01:00 | PC

いまさらながらXPでPostgresqlのネットワーク設定

うちには2台PCあってLANでつないでいる。XPとVistaだ。
いままでもPostgresql8.3.7をインストールしていたが、互いにアクセスしあえる環境をつくろうと考えたった。
まずはpostgresql.confに「listen_addresses = '*'」を設定。
それからpg_hba.confに以下のような設定をした。PCのアドレスは「192.168.11.3」。
# IPv4 local connections:
host all all 192.168.11.2/24 md5
で再起動。ところが、VISTAのPostgresqlは正常に立ち上がるのにXPはサービスが停止してしまう。
これには困った。
いろいろ調べても全然わからない。そこで、元の記述である
# IPv4 local connections:
host all all 127.0.0.1/32 md5
に戻すと起動する。
結局、以下の内容でとりあえずフィックス。
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.11.2/24 md5
# IPv6 local connections:
host all all ::1/128 md5
ネットワーク指定のアクセス許可だけではサービスが立ち上がらない理由は不明。
# by nora1962 | 2009-09-16 21:43

SQL CLRでSTRCONV関数

以下の内容のSqlClrStrConv.vbをc:\tmpに作成します。
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

Public Class SQLCLR
_
Public Shared Function SqlStrConv(ByVal str As SqlString, ByVal mode As SqlInt32) As SqlString
Return StrConv(str.ToString, mode)
End Function
End Class

コンパイルします。
c:\tmp>vbc /out:SqlClrStrConv.dll /t:library /r:"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlaccess.dll" SqlClrStrConv.vb

sqlcmdかクエリアナライザで以下のコマンドを実行します。

USE [pubs]
GO
create ASSEMBLY [SqlClrStrConv]
FROM 'C:\tmp\SqlClrStrConv.dll'
WITH PERMISSION_SET = SAFE
GO

create function SqlStrConv( @str nvarchar(max),@conversion int ) returns nvarchar(max)
as external name SqlClrStrConv.SQLCLR.SqlStrConv
go

これで
select cast( dbo.SqlStrConv('abc',4) as nvarchar(10) )
go

で全角に変換できます。
# by nora1962 | 2009-09-15 22:42 | PC

Vista SP2でACCESS2003が不安定になる

WindowsUpdateで使っているVistaがSP2になった。
そしたら、ACCESS2003の挙動が変になった。データベースウインドウを閉じようとすると「ACCESSの動作
が停止しました」というメッセージが出てACCESSが落ちる。
イベントビューワーを見てみるとNTDLL.DLLで落ちてるっぽい。

環境としてOFFICE2003とOFFICE20007を共存させているのが悪いのかなと思いながら、ググって見た。
その結果、これにちかいかなと見つけたのが
http://support.microsoft.com/kb/945674/ja

この修正をあてたところ、ひとまず解決。
しかし、マイクロソフトにも困ったもんだ。
# by nora1962 | 2009-09-14 02:47 | PC




徒然なるままに
by nora1962
メモ帳
最新のトラックバック
ライフログ
検索
タグ
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧