複数テーブルのデータを PLSQL でエクスポートする

PL/SQLでは、DBMS_DATAPUMPパッケージを使用して複数の表のデータをエクスポートできます。以下に、DBMS_DATAPUMPを使用して複数の表のデータをデータファイルにエクスポートする方法を示すサンプルコードを示します。

DECLARE
  l_dp_handle   NUMBER;
  l_status      VARCHAR2(20);
BEGIN
  -- 创建数据泵作业
  l_dp_handle := DBMS_DATAPUMP.OPEN (
    operation   => 'EXPORT',
    job_mode    => 'FULL',
    job_name    => 'EXPORT_JOB',
    version     => 'COMPATIBLE');
  
  -- 添加要导出的表
  DBMS_DATAPUMP.metadata_filter(
    handle     => l_dp_handle,
    name       => 'TABLE_EXPORT',
    value      => '''SCHEMA_NAME''');
  
  DBMS_DATAPUMP.metadata_filter(
    handle     => l_dp_handle,
    name       => 'TABLE_EXPORT',
    value      => '''TABLE_NAME1, TABLE_NAME2''');
  
  -- 指定导出数据的目录和文件名
  DBMS_DATAPUMP.add_file(
    handle     => l_dp_handle,
    filename   => 'DIRECTORY_NAME:EXPORT_FILE.dmp',
    directory  => 'DATA_PUMP_DIR',
    filetype   => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
  
  -- 开始导出数据
  DBMS_DATAPUMP.START_JOB(l_dp_handle);

  -- 等待导出完成
  l_status := DBMS_DATAPUMP.JOB_STATUS(l_dp_handle);
  WHILE l_status != 'COMPLETED' AND l_status != 'STOPPED' LOOP
    l_status := DBMS_DATAPUMP.JOB_STATUS(l_dp_handle);
    DBMS_LOCK.SLEEP(1);
  END LOOP;

  -- 关闭数据泵作业
  DBMS_DATAPUMP.CLOSE(l_dp_handle);
  
  DBMS_OUTPUT.PUT_LINE('Export job completed.');
EXCEPTION
  WHEN OTHERS THEN
    -- 处理异常
    DBMS_OUTPUT.PUT_LINE('Export job failed: ' || SQLERRM);
    IF DBMS_DATAPUMP.IS_OPEN(l_dp_handle) THEN
      DBMS_DATAPUMP.CLOSE(l_dp_handle);
    END IF;
END;

上記のコードで、次の部分を変更する必要があります。

  1. スキーマ名
  2. TABLE_NAME1, TABLE_NAME2
  3. DIRECTORY_NAME:EXPORT_FILE.dmp

そうすると、上記のコードでは複数のテーブルのデータを指定したデータファイルに出力できるようになる

bannerAds