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 技術サポート情報一覧] 
                                 
                        |