MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[669]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(669番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
perl による読み込み( RE: インポートエラー)

Date: Sun, 1 Jun 2003 17:07:17 +0900
From: "Akira Horikawa" <who@example.ne.jp>


堀川です、こんにちは

 ちょっと時間があったので、perlを使ってインポートするプログラムを
作ってみました。
 参考にして下さい。


#ADODBの定義
    use Win32::OLE::Const 'Microsoft ActiveX Data Objects 2.6 Library';

#接続オブジェクトの作成
    $oCon = Win32::OLE->new('ADODB.CONNECTION');
        die "*** $oCon new Error***"  if( Win32::OLE->LastError() );

#接続文字列の作成
    $ConStr = 'Provider=SQLOLEDB;Data Source=(local);' .
              'Initial Catalog=tempdb;Trusted_Connection=YES';


#tempdbデータベースに接続を行なう
    $oCon->{ConnectionString} = $ConStr;
    $oCon->Open();
       die "***Connect Error***"  if( Win32::OLE->LastError() );

#Commandオブジェクトの作成
    $oCMD = Win32::OLE->new('ADODB.COMMAND');
    $oCMD->{ActiveConnection} = $oCon;
    $oCMD->{CommandTimeout} = 30;
    $oCMD->{CommandType} = 1;

#Tableが存在したら、そのテーブルを削除する
    $oCMD->{CommandText} = 
         'IF EXISTS (SELECT name FROM tempdb.dbo.sysobjects ' .
         '     WHERE name = \'データT\' AND type = \'U \')  ' .  
         'BEGIN                   ' .
         '    DROP TABLE データT  ' .
         'END';
    $oCMD->EXECUTE();

#Tableを作成する
    $oCMD->{CommandText} = 
           'CREATE TABLE データT ' .
           '( 課係コード [varchar](10) NOT NULL, ' .
           '  処理日     [datetime] NOT NULL,' .
           '  荷主コード [int] NULL,' .
           '  買受人コード [int] NULL,'.
           '  品名コード [int] NULL,'.
           '  売上金額   [int] NULL,' .
           '  売上キロ数 [float](24) NULL,' .
           '  原票番号   [money] NULL,' .
           '  行NO       [smallint] NULL,' .
           '  事故伝NO   [varchar](4) NULL' .
           ')';
    $oCMD->EXECUTE();




#テキストファイルの読み込みと、レコード挿入処理
    while( <> ) {
        chop;
        @ary = split(/,/);
        #**print
"$ary[0]\t$ary[1]\t$ary[2]\t$ary[3]\t$ary[4]\t$ary[5]\t$ary[6]\t$ary[7]\
t$ary[8]\t$ary[9]\n";

        $oCMD->{CommandText} = 
            'INSERT INTO データT(  ' .
            '  課係コード ,        ' .
            '  処理日,             ' .
            '  荷主コード,         ' .
            '  買受人コード,       ' .
            '  品名コード,         ' .
            '  売上金額,           ' .
            '  売上キロ数,         ' .
            '  原票番号,           ' .
            '  行NO,               ' .
            '  事故伝NO ) VALUES ( ';

         $oCMD->{CommandText} .= 
          ( "\'$ary[0]\',\'$ary[1]\',$ary[2],$ary[3],$ary[4],$ary[5]," .
            "$ary[6],$ary[7],$ary[8],\'$ary[9]\')" );

         #print $oCMD->{CommandText};
         #print "\n";
         
         $oCMD->EXECUTE();  #レコード挿入
    }



#接続を閉じる
    $oCon->Close();

#終了します
    exit;

#プログラムが終了したら、Enterprise Managerで、
#tempdbデータベースのテーブルを確認します



日本語文字が上手く通りましたね
tempdbの中に、テーブルが作成され、レコードが挿入されます。

This is perl, v5.6.1 built for MSWin32-x86-multi-thread を使いました

------------------------------------
(株)日本技術ソフト開発
        堀川 明  (Akira Horikawa)
    06月01日(日曜日) 17時05分記
        mailto:who@example.ne.jp
        http://www.horikawa.ne.jp/msde/



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。