Symfoware

Symfowareについての考察blog

ErlangからODBC経由でSymfowareにデータを登録する

最近、個人的に勉強しているErlangを使用して、Symfowareへの
データ登録を試してみました。

使用したソースはこちら。

-module(odbc_inst).
-export([do_insert/0,do_insert/1]).

do_insert() ->
    do_insert("out.csv").

do_insert(File) ->
    % ODBC開始
    odbc:start(),

    % コネクション作成
    {ok, Sym} = odbc:connect("DSN=SAMPLE;UID=user_id;PWD=password;", [{scrollable_cursors, off}]),

    % ファイルオープン
    {ok, IoDevice} = file:open(File, read),

    % ファイルの読み込みと、データ登録実行
    read(Sym, IoDevice),

    % ファイルクローズ
    file:close(IoDevice),

    % コネクション切断
    odbc:disconnect(Sym).

% ファイルを読み込んで、データ追加を実行する。
read(Sym, IoDevice) -> 
    case io:get_line(IoDevice, "") of
    eof ->
        ok;
    Line ->
        Zipcode = string:substr(Line,2,7),
        Address = string:substr(Line,12,100),
        Query = "INSERT INTO SC_SAMPLE.POST_CD (郵便番号,住所) VALUES ('" ++ Zipcode ++ "','" ++ Address ++ "')", 
        % io:format("~s~n",[Query]),
        {updated, _} = odbc:sql_query(Sym, Query),
        read(Sym, IoDevice)
    end.



odbc:start()としないと、データベースに接続できないことがわからず、
結構はまりました。

参考にさせていただいたサイトはこちらです。
Erlang クエックブック
Erlang ODBC Getting started

処理完了まで6分程度必要です。
やはり、トランザクションを明示しないと実行速度が上がらないようです。






関連記事
  1. 2009/06/30(火) 12:54:49|
  2. 開発
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ