gikoha’s blog

個人的メモがわり

SQLdumpRust

SQLdumpRust

github.com

これはなんですか

  • SQLdumpRustは、Go版の SQLbackup の代替品です
  • テーブルをテキストのSQL形式で書き出します

ビルド

  • cargo build

制約

  • サポートしているoracle typeは以下の通りです
    • NVARCHAR2, VARCHAR2, NVARCHAR
    • NUMBER
    • DATE
    • BLOB
    • その他の型はサポートしていないので自分で追加するべき

起動オプション

  • SQLdumpRust --dbenv <環境変数> / --ocistring <connect string> [--drop] [--tables table1,table2,..]
  • --dbenv <環境変数> あるいは --ocistring <接続文字列> dbへの接続方法を指定
  • --drop DROP TABLEを追加する
  • --tables <table1,table2,...> dumpするテーブルを指定

% SQLdumpRust --dbenv OCISTRINGIMAC --tables DCUSERS

  CREATE TABLE "ADMIN"."DCUSERS" 
   (    "ID" NUMBER NOT NULL ENABLE, 
    "USERNAME" NVARCHAR2(80) COLLATE "USING_NLS_COMP" NOT NULL ENABLE, 
    "PASSWORD" NVARCHAR2(120) COLLATE "USING_NLS_COMP" NOT NULL ENABLE, 
    "STORAGE" NVARCHAR2(260) COLLATE "USING_NLS_COMP", 
    "BINDING" NVARCHAR2(80) COLLATE "USING_NLS_COMP", 
    "NUMCHILD" BLOB
   )  DEFAULT COLLATION "USING_NLS_COMP" SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 10 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DATA" 
 LOB ("NUMCHILD") STORE AS SECUREFILE (
  TABLESPACE "DATA" ENABLE STORAGE IN ROW CHUNK 8192
  NOCACHE LOGGING  NOCOMPRESS  KEEP_DUPLICATES 
  STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) 
;

SET DEFINE OFF;
Insert Into DCUSERS ("ID","USERNAME","PASSWORD","STORAGE","BINDING","NUMCHILD") VALUES (3,'test3','$2a$10$rwK6RZ.09tKeZOCz.CxK3ubB0UAVdW/6rtg5DTV0w2sU3HdOneWJS',NULL,'test3@test.com',HEXTORAW('000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'));