sql >> データベース >  >> RDS >> Oracle

BLOB列を使用してOracleでテストデータを準備します

    LOBデータの内容が同じであることを気にしない場合は、以下を使用できます(1つのランダムな10000バイトのLOB値を作成します):

    declare
       v_clob        clob;
       v_blob        blob;
       v_dest_offset integer := 1;
       v_src_offset  integer := 1;
       v_warn        integer;
       v_ctx         integer := dbms_lob.default_lang_ctx;
    begin
       for idx in 1..5
       loop
         v_clob := v_clob || dbms_random.string('x', 2000);
       end loop;
       dbms_lob.createtemporary( v_blob, false );
       dbms_lob.converttoblob(v_blob,
                              v_clob,
                              dbms_lob.lobmaxsize,
                              v_dest_offset,
                              v_src_offset,
                              dbms_lob.default_csid,
                              v_ctx,
                              v_warn);
       insert into blob_test (id, data)
         select rownum, v_blob from dual
         connect by level <= 10000;
    end;
    /
    

    ここにサンプルセッションを参照してください:

    SQL> create table blob_test (id number primary key, data blob);
    
    Table created.
    
    SQL> declare
      2    v_clob        clob;
      3    v_blob        blob;
      4    v_dest_offset integer := 1;
      5    v_src_offset  integer := 1;
      6    v_warn        integer;
      7    v_ctx         integer := dbms_lob.default_lang_ctx;
      8  begin
      9    for idx in 1..5
     10    loop
     11      v_clob := v_clob || dbms_random.string('x', 2000);
     12    end loop;
     13    dbms_lob.createtemporary( v_blob, false );
     14    dbms_lob.converttoblob(v_blob,
     15                           v_clob,
     16                            dbms_lob.lobmaxsize,
     17                           v_dest_offset,
     18                           v_src_offset,
     19                           dbms_lob.default_csid,
     20                           v_ctx,
     21                           v_warn);
     22
     23    insert into blob_test (id, data)
     24    select rownum, v_blob
     25      from dual
     26     connect by level <= 10000;
     27
     28  end;
     29  /
    
    PL/SQL procedure successfully completed.
    
    
    SQL> select count(*) , max(length(data)) from blob_test;
    
      COUNT(*) MAX(LENGTH(DATA))
    ---------- -----------------
         10000             10000
    

    別のデータが必要な場合は、v_lobを生成して挿入できます 代わりにループで。




    1. C#でSQL Serverデータベースからデータを取得するにはどうすればよいですか?

    2. PostgreSQLの非公開スキーマへのrsf::st_writeの使用

    3. 既存の列のデフォルト値を設定する方法

    4. Microsoft Accessテーブルのヒント–秘訣とガイドラインパート2