#数据导入导出
YashanDB内置了数据导入导出工具,可支持将其他数据库单张表导出的CSV格式文件导入崖山数据库,也可以将YashanDB导出的元数据文件或数据文件导入到另外一个YashanDB中。
本小节将介绍以下两种场景数据导入导出的操作步骤,您也可以参考yasldr、imp、exp对应文档了解详细的操作说明。
- 将CSV格式数据文件导入YashanDB。
- 在YashanDB之间进行元数据导出导入。
# 导入csv数据文件
以安装用户登录数据库所在服务器,在HOME路径下执行如下命令创建
datafile文件,模拟CSV格式写入测试数据,按Esc,输入:wq保存并退出文件编辑:$ vi datafile 1|load|101 2|load|201以测试用户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>准备数据文件导入的目标表,本文以创建表
loadData为例:CREATE TABLE loadData (c1 INT,c2 CHAR(10),c3 INT);以数据库安装用户在数据库服务器上执行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列字段中。再次以测试用户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之间进行元数据的导入导出操作。
# 导出元数据
以测试用户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>创建示例表并插入数据:
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;以安装用户登录数据库所在服务器,执行如下命令将
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执行如下命令查看导出的元数据文件:
$ 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权限。
执行如下命令连接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>执行如下SQL语句删除表classmate_info和classmate_info1:
DROP TABLE classmate_info; DROP TABLE classmate_info1;通过查询
USRE_TABLES视图查看当前用户下所有表信息,此时sales用户下不存在任何表:SELECT table_name FROM USER_TABLES; TABLE_NAME ----------------------------------------------------------------以安装用户登录数据库所在服务器,执行如下命令将元数据文件导入至
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登录数据库并查看用户表信息:
$ 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执行如下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

