目录
一、安装jdk
oceanbase提供了obloaderdumper工具用于数据的导入导出,在安装该工具前按照官方文档要求需要安装 oraclejdk1.8,不建议使用openjdk的版本。
1.1 查看jdk当前目录并删除java目录
which java
/usr/bin/java
rm -rf /usr/bin/java
1.2 查看jdk相关安装组件
rpm -qa |grep java
1.3 卸载系统自带openjdk
rpm -qa | grep java | xargs rpm -e --nodeps
rpm -qa |grep java
1.4 解压并安装jdk
tar -zxvf jdk-8u202-linux-x64.tar.gz
mv jdk1.8.0_202 /usr/bin/java
ls -ll /usr/bin/java
1.5 配置环境变量
root、admin用户添加的内容一致
[root@ob_test1 ~]# vi ~/.bash_profile
[root@ob_test1 ~]# . ~/.bash_profile
export JAVA_HOME=/usr/bin/java
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
[root@ob_test1 ~]# su - admin
Last login: Sat May 27 00:32:01 CST 2023 on pts/0
[admin@ob_test1 ~]$ vi .bash_profile
[admin@ob_test1 ~]$ . .bash_profile
1.6 激活环境变量并验证安装结果
[admin@ob_test1 ~]$ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
二、OB创建用于导入导出的用户
obclient [oceanbase]> create user user1@'%' identified by 'user1' ; Query OK, 0 rows affected (0.020 sec)
obclient [oceanbase]> grant all privileges on *.* to user1@'%';
Query OK, 0 rows affected (0.014 sec)
三、Ob导入导出工具
3.1解压obloaderdumper
[admin@ob_test1 ~]$ unzip ob-loader-dumper-4.2.1-RELEASE.zip
[admin@ob_test1 ~]$ cd ob-loader-dumper-4.2.1-RELEASE/
[admin@ob_test1 ob-loader-dumper-4.2.1-RELEASE]$ ls
bin conf docs lib LICENSE NOTICE tools
3.2添加环境变量
[admin@ob_test1 ~]$ cat .bash_profile
export OB_LOAD_DUMP_HOME=/home/admin/ob-loader-dumper-4.2.1-RELEASE
export PATH=$OB_LOAD_DUMP_HOME/bin:$PATH
3.3查看帮助文档
[admin@ob_test1 ~]$ obdumper --help
Examples:
e.g: ./obdumper -h 192.168.0.0 -P 2883 -u xxx -t tenantA -c ClusterA -p xxx --sys-password xxxx -D USERA --ddl --all -f /Users/admin/DUMP-1/
e.g: ./obdumper -h 192.168.0.0 -P 2883 -u xxx -t tenantA -c ClusterA -p xxx --sys-password xxxx -D USERA --csv --all -f /Users/admin/DUMP-1/
四、创建测试表、测试数据测试导入
4.1创建测试表
[admin@ob_test1 ~]$ obclient -h127.0.0.1 -P2881 -uuser1 -p'user1' -Dtest -A
obclient [test]> CREATE TABLE t_goods_category(
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> t_category VARCHAR(30),
-> t_remark VARCHAR(100)
-> )ENGINE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.049 sec)
obclient [test]> select * from t_goods_category;
Empty set (0.010 sec)
4.2制作csv数据
4.3上传csv
五、导入csv文件
[admin@ob_test1 ~]$ cat test.csv
id ,t_category,t_remark
1,jann,10011d1d1
2,Occc,5877d1d1d
3,Adada,5511dada1
4,dCdff,6622csda
5,dad1,2888fdfa
6,faf1,2254vdsgs
7,ghhsh,225dfsfa
8,ddd1,366dadada
9,jgfjf,h55hdfhdh
10,fgsgs,555gdgdg
[admin@ob_test1 ~]$ obloader -h127.0.0.1 -P2881 -uuser1 -puser1 -Dtest --table t_goods_category --csv -f /home/admin/test.csv --external-data
六、验证结果
6.1对比数据
[admin@ob_test1 ~]$ obclient -h127.0.0.1 -P2881 -uuser1 -p'user1' -Dtest -A
obclient [test]> select * from t_goods_category;
除表头没有导入成功外均导入成功,测试结果正常。
七、汉字数据导入测试
7.1创建测试表
obclient [test]> CREATE TABLE t_address(
-> addr_id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(50),
-> address VARCHAR(100)
-> )ENGINE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.026 sec)
7.2导入数据
[admin@ob_test1 ~]$ obloader -h127.0.0.1 -P2881 -uuser1 -puser1 -Dtest --table t_address --csv -f /home/admin/test1.csv --external-data
原文件:
对比数据发现汉字导入后出现乱码,应该是由于字符集的问题导致的。
7.3查看OB字符集
obclient [test]> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb4 |
可以看到数据库当前的字符集是utf8
7.4将csv文件的编码通过txt修改为utf8
7.5修改编码后重新导入
obclient [test]> truncate table t_address;
Query OK, 0 rows affected (0.314 sec)
obclient [test]> select * from t_address;
Empty set (0.004 sec)
[admin@ob_test1 ~]$ obloader -h127.0.0.1 -P2881 -uuser1 -puser1 -Dtest --table t_address --csv -f /home/admin/test1.csv --external-data
总结
中文字符显示正常包括繁体字、简体字等。在对中文字符的数据导入时需要注意文件本身的字符集问题或者导出文件源端数据库的字符集。