PQCompo Programmer's Guide

Copyright 1999 (c) Takezou


Routines for copy in/out


<目次>


  1. Routines for copy in/outの概要

    Routines for copy in/out機能を使用することで、データベースのデータをテキストデータとしてインポートもしくはエクスポートすることができます。この機能は、データをバックアップする時や、Excel等のソフトにデータを取り込む際に使用します。項目間の区切りはデフォルトではTAB(#09)が使用されますが、COPYコマンド実行時に"USING DELIMITERS"オプションを指定してやることで変更可能なので、CSV形式でのインポートも行なえます。ただし、CSVの仕様がExcelやAccessとは若干異なるため、TAB以外を区切りとして使用する場合や文字データ内にTAB文字が含まれる場合は注意が必要です。copy in/outは以下の手順で使用します。

  2. copy outの使用方法

    1. ExecSQLメソッドでCOPYコマンドを実行

      PQCompo.ExecSQL('COPY <テーブル名> TO stdout');

    2. データを受け取る文字列を準備しGetLine関数がfalseを返すまで、データを受け取ります。(この例ではデータをテキストファイルに保存しています。)

      AssignFile(FFile, 'data.txt');
      Rewrite(FFile);
      while PQCompo1.GetLine(S) do
      begin
        Writeln(FFile, S);
      end;

    3. EndCopyメソッドを実行して、バックエンドにコピーの終了を通知します。

      PQCompo1.EndCopy;

  3. copy inの使用方法

    1. ExecSQLメソッドでCOPYコマンドを実行

      PQCompo.ExecSQL('COPY <テーブル名> FROM stdin');

    2. テキストデータを1行ずつPutLineメソッドで送ります。(この例ではテキストファイルのデータをデータベースに送っています。)テキストファイルの書式は、格納先のテーブルの構造と一致している必要があります。

      AssignFile(FFile, 'data.txt');
      Reset(FFile);
      while not EOF(FFile) do
      begin
        Readln(FFile, S);
        PQCompo1.PutLine(S);
      end;

    3. EndCopyメソッドを実行して、バックエンドにコピーの終了を通知します。

      PQCompo1.EndCopy;

    Routines for copy in/outの使用例については、サンプルプログラムの Demo4を参考にしてください。


<戻る>