#数据导入导出

YashanDB内置了数据导入导出工具,可支持将其他数据库单张表导出的CSV格式文件导入崖山数据库,也可以将YashanDB导出的元数据文件或数据文件导入到另外一个YashanDB中。

本小节将介绍以下两种场景数据导入导出的操作步骤,您也可以参考yasldrimpexp对应文档了解详细的操作说明。

  • 将CSV格式数据文件导入YashanDB。
  • 在YashanDB之间进行元数据导出导入。

# 导入csv数据文件

  1. 以安装用户登录数据库所在服务器,在HOME路径下执行如下命令创建datafile文件,模拟CSV格式写入测试数据,按Esc,输入:wq保存并退出文件编辑:

    $ vi datafile
    
    1|load|101
    2|load|201
    
  2. 以测试用户sales通过数据库客户端工具yasql连接数据库,数据库默认连接端口为1688。

    $ yasql sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  3. 准备数据文件导入的目标表,本文以创建表loadData为例:

    CREATE TABLE loadData (c1 INT,c2 CHAR(10),c3 INT);
    
  4. 以数据库安装用户在数据库服务器上执行shell命令,将datafile文件中数据导入至yasldr_user用户的loadData表中:

    $ yasldr yasldr_user/yasldr batch_size=4032 control_text="'LOAD DATA OPTIONS(DEGREE_OF_PARALLELISM=2) INFILE '/home/yashan/datafile' FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' APPEND INTO TABLE loadData(c1,c2,c3) '"
    
    YashanDB Loader Enterprise Edition Release {version_number} x86_64 297f388
    2 rows successfully loaded.
    Check /home/yashan/datafile.log for more info.
    [YASLDR] execute succeeded
    

    如上命令将datafile文件中数据根据|进行分隔,分别导入loadData表中的c1、c2和c3列字段中。

  5. 再次以测试用户sales通过数据库客户端工具yasql连接数据库,验证数据导入情况:

    $ yasql sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> SELECT c1,c2,c3 FROM loadData;
       
              C1 C2                      C3
    ------------ ------------- ------------
               1 load                   101
               2 load                   201
    

# YashanDB之间元数据导入导出

exp工具是YashanDB的配套导出工具,提供元数据导出及CSV导出能力;imp为YashanDB的配套导入工具,提供元数据导入能力。

在实际业务开发过程中,业务上线您可能需要将开发完成的YashanDB中的元数据对象导入到生产环境中,本小节将介绍如何在YashanDB之间进行元数据的导入导出操作。

# 导出元数据

  1. 以测试用户sales通过数据库客户端工具yasql连接源端数据库,数据库默认连接端口为1688。或者您也可以重新创建用户并授予DBA权限后进行连接。

    $ yasql sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 创建示例表并插入数据:

    CREATE TABLE classmate_info(c1 INT,c2 CHAR(10));
    INSERT INTO classmate_info VALUES(1,'h'),(2,'a'),(3,'c');
    CREATE TABLE classmate_info1(c1 INT,c2 INT);
    INSERT INTO classmate_info1 VALUES(1,2),(3,4),(5,6);
    COMMIT;
    
  3. 以安装用户登录数据库所在服务器,执行如下命令将salesschema下所有元数据导出至export.owner.export文件中,请将********更改成设置的sys用户密码:

    $ exp sales/******** FILE=export.owner.export OWNER=sales
    
    YashanDB Export Release {version_number} x86_64 297f388
    Start export user [SALES] from dba view
    Exporting tablespaces...
    Exporting database links...
    Exporting sequences...
    Exporting object synonyms...
    Exporting type dependencies synonyms...
    Exporting types...
    Exporting tables...
       exporting table IMPORT_USER.CLASSMATE_INFO   3 rows exported
       exporting table IMPORT_USER.CLASSMATE_INFO1          3 rows exported
    Exporting access constraints...
    Exporting indexes...
    Exporting other constraints...
    Exporting primary keys...
    Exporting foreign keys...
    Exporting other objects...
    export terminated successfully
    
  4. 执行如下命令查看导出的元数据文件:

    $ ll
    
    total 24
    -rw-r-----  1 yashan yashan 16771 Aug 14 21:08 export.owner.export
    drwxrwxr-x 12 yashan yashan   259 Aug  8 16:33 install
    drwxr-----  3 yashan yashan    20 Aug  8 16:45 yasdb_data
    drwxrwxr-x  3 yashan yashan    22 Aug  8 16:41 yasdb_home
    

# 导入元数据

为方便演示,仍然以快速体验YashanDB创建的数据库为例演示导入元数据操作,在实际使用中,目标库与源库为不同的数据库,则需要在目标库上创建用户并授予DBA权限。

  1. 执行如下命令连接YashanDB:

    $ yasql sales/********
    YashanDB SQL Personal Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Personal Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 执行如下SQL语句删除表classmate_info和classmate_info1:

    DROP TABLE classmate_info;
    DROP TABLE classmate_info1;
    
  3. 通过查询USRE_TABLES视图查看当前用户下所有表信息,此时sales用户下不存在任何表:

    SELECT table_name FROM USER_TABLES;
    
    TABLE_NAME
    ----------------------------------------------------------------
    
    
  4. 以安装用户登录数据库所在服务器,执行如下命令将元数据文件导入至sales用户,请将********更改成设置的用户密码:

    $ imp sys/******** FILE=export.owner.export FROMUSER=sales
    
    YashanDB Import Release {version_number} x86_64 297f388
    Start import User [SALES] from file export.owner.export
    Checking tablespace...
    Switch to owner SALES
    Importing table CLASSMATE_INFO        3 rows imported
    Importing table CLASSMATE_INFO1       3 rows imported
    import terminated successfully
    
  5. 登录数据库并查看用户表信息:

    $ yasql sales/********
    YashanDB SQL Personal Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Personal Edition Release {version_number} x86_64 - Linux
    
    SQL> SELECT table_name FROM USER_TABLES;
    
    TABLE_NAME
    ----------------------------------------------------------------
    classmate_info1
    classmate_info
    
  6. 执行如下SQL语句查看表classmate_info和classmate_info1表中的数据:

    SELECT c1,c2 FROM classmate_info;
    
              C1 C2
    ------------ -------------
               1 h
               2 a
               3 c
    
    SELECT c1,c2 FROM classmate_info1;
    
              C1           C2
    ------------ ------------
               1            2
               3            4
               5            6
    
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流