Oracle merge insert 问题
|
|
执行如上 SQL 发现一直报 ORA-00001: unique constraint (ENCRYPT.SYS_C007033) violated
|
|
执行如上 SQL 发现一直报 ORA-00001: unique constraint (ENCRYPT.SYS_C007033) violated
用户使用 shardingsphere 发现 No suitable driver 异常。但是用户的 jar 包中是有该驱动的。
发现如果增加这段代码后,可以正常执行
|
|
正常而言,按照 JDBC4.0 标准,驱动是通过 spi 机制加载。不需要手动加载。
通过 debug DriverManager 发现其中有个驱动的名称中包含了 -
不是合法的 java 名称。
但是会将异常吞掉,所以没有展示出来。
修复名称后,可以正常使用。
JDBC4.0 是通过 spi 加载。
-
不是合法名称,使用 shade 插件替换名称时要注意。
DriverManager 加载多个驱动过程中,如果有任何一个失败,都不会再继续加载,并不会抛出相关异常。
https://github.com/julianhyde/sqlline sqlline 是一个通过 jdbc 的连接工具。
git clone git://github.com/julianhyde/sqlline.git
cd sqlline
./mvnw package
将 shardingsphere-jdbc 打包,之后最好再使用 sharde PLUGIN 打成一个 jar 包
修改 sqlline bin 目录下的 sqlline 脚本,将相关依赖添加进去包括数据库驱动、shardingsphere shade jar、 sqlline-VERSION-jar-with-dependencies.jar
#!/bin/bash
# sqlline - Script to launch SQL shell on Unix, Linux or Mac OS
BINPATH=$(dirname $0)
exec java -cp "$BINPATH/../target/*":"/Users/chenchuxin/Documents/sqlline-sqlline-1.12.0/bin/*" sqlline.SqlLine "$@"
# End sqlline
sqlline -d org.apache.shardingsphere.driver.ShardingSphereDriver -u jdbc:shardingsphere:absolutepath:/Users/chenchuxin/Documents/GitHub/sw-test/src/main/resources/META-INF/oracle.yaml
查看 examples 了解到 opendal 是各种数据源的通用连接器
如何才能实现分布式 join?
有三种方式:
对于分析型的 SQL 而言,不需要考虑事务和性能的话,可以采用数据挪动的方式来实现。
如下图所示,列出了可能的实现方式。
该方案的具体实现需要考虑 2 点。