我有:
1)Oracle数据库1,其中
SELECT * FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET'
给出
NLS_CHARACTERSET
WE8ISO8859P15
NLS_NCHAR_CHARACTERSET
AL16UTF16
2)Oracle数据库2,其中
NLS_CHARACTERSET
AL32UTF8
NLS_NCHAR_CHARACTERSET
AL16UTF16
3)H2数据库3
因此,我使用sqlloader将一些CLOB从DB1复制到DB2。然后我使用PreparedStatement将它们从DB2复制到DB3。
然后我读它们就像
private String parseCLOB(Object t) {
if (t instanceof oracle.sql.CLOB|| t instanceof org.h2.jdbc.JdbcClob) {
InputStream i = t.getAsciiStream();
StringWriter w = new StringWriter();
IOUtils.copy(i, w, "UTF-8");
t = w.toString();
}
return t
}
它已经破坏了DB2的符号,适用于DB3。但是,如果我替换" ISO-8859-15",它适用于DB2并且适用于DB3。
如何让两个数据库都正常工作?