gbase8s之mysql模式相关文档大全
1,参数列表
| 命令或者参数 | 解释 | 备注 |
| set environment sqlmode 'mysql' | 开启mysql模式 | gbase,oracle,mysql三种模式 |
| SET FOREIGN_KEY_CHECKS = 0; | 关闭外键检查 | 0关闭;1开启 |
| onmode -wf NLS_LENGTH_SEMANTICE=4;onmode -wf SQL_LOGICAL_CHAR=4 | mysql长度是字符,gbase是字节,开启这个参数会将mysql的字符长度扩容4备,这样mysql的中文插入gbase不会被截断(mysql模式建议开启兼容字符单位) | |
| onmode -wf OVERLENERROR=0 | 插入的字符的长度超过列,0截断不报错,1报错 | 0截断不报错,1报错 |
| onmode -wf MYSQL_DEFAULT_DBSPACE=datadbs01 | 指定创建库的默认空间 | |
| onmode -wf NOT_ADD_ESCAPE_CHAR=1 | insert有反斜杠\不报错 | 0,关闭,1开启(待验证) |
| onmode -wf STRING_CASE_INSENSITIVE=1 | 设置1后所有建表语句的(char,nchar,varchar,nvarchar类型列)大小写不敏感 | 0,关闭,1开启 |
| onmode -wf GLS_LOAD_SINGLE_BYTE_FILE=1 | 当该环境变量设置为1 后, 则dbaccess不再接受 CLIENT_LOCALE设置的值,而是强制使用 en_US.8859-1单字节编码处理文件。即,通过 en_US.8859-1 编码来读取插入的sql文件。 由于en_US.8859-1编码规则,理论上可以兼容utf-8编码,所以可以将乱码文件导入到数据库内。 | 0,关闭,1开启(迫不得已才开启这个参数) |
| onmode -wf OLLOG_SIZE_ALL=4064 | 控制online.log大小,超过4MB会产生一个online.log.bak | |
| onmode -wf EXSTMT_CACHE=1 | 缓存总开关,解决insert单条插入慢等问题; 查看缓存配置: 查看缓存信息: 开启缓存 关闭缓存 清空缓存 | 0关闭缓存;1开启缓存 |
| EXSTMT_CACHE_HITS | 语句命中几次再缓存 | 单位是次数 |
| EXSTMT_CACHE_SIZE | 内存限制大小 | 单位kb |
| EXSTMT_CACHE_NOLIMIT | 是否限制内存大小 | 0不做限制;1限制 |
| EXSTMT_CACHE_NUMPOOL | 缓存池个数 | 单位个数 |
| onmode -wf MYSQL_OLD_VERSION=1 | 设置为1,列有not null约束,insert不指定会插入默认初始化值。 | |
| onmode -wf STRICT_TRANS_TABLES=1 | 不可将空值插入不接受空值的字段,DML操作时,目标列有not null约束和default值,赋值null会转换default值 | |
| onmode -wf SKIP_NAME_RESOLVE=1 | . 性能杀手
| 0关闭跳过域名解析,1开启跳过域名解析 |
2,url参数
| 参数 | 介绍 | 备注 |
| IFX_USE_STRENC=true | 这个参数的作用如下: 兼容性处理:在JDBC 3.50JC4X1及以后的版本中,添加IFX_USE_STRENC=true意味着当遇到非法或不支持的字符集数据时,JDBC驱动程序将采用一种向后兼容的处理方式。而不是直接抛出错误或异常,它会将这些非法字符转换为问号?,然后将转换后的数据插入到数据库中。 避免乱码问题:在某些情况下,如果没有正确配置字符集,从数据库检索数据时可能会出现乱码。通过设置IFX_USE_STRENC=true,可以在一定程度上避免因字符编码不匹配导致的乱码问题,尽管这种方式是以牺牲数据准确性(将非法字符替换为问号)为代价的。 | |
| ifx_trimtrailingspaces=1或trim_trailing_spaces=1 | 解决NLS_LENGTH_SEMANTICE=1时候char(1)有空格得问题 | 其中有一个已经验证没问题 |
3,导出insert语句
echo "set environment sqlmode 'mysql';unload to tabname.sql getinsert tabname -w \"Id in (select Id from tabname )\"" | dbaccess gbasedb语法如下:
echo "set environment sqlmode 'mysql';unload to tabname.sql getinsert tabname -w \"Id in (select Id from tabname )\"" | dbaccess testdb
- unload to tabname.sql:将数据导出到文件tabname.sql
- getinsert tabname:导出格式为INSERT语句(生成SQL插入语句)
- -w "Id in (select Id from tabname)":WHERE条件
- 这里条件是Id字段在tabname表的Id集合中
#导出t1表id字段
echo "set environment sqlmode 'mysql';unload to t1.sql getinsert t1 -w \"id in (select id from t1 )\"" | dbaccess testdb
#导出t2表id和name字段
echo "set environment sqlmode 'mysql';unload to t2.sql getinsert t2 -w \"id in (select id from t2 ) and name in (select name from t2) \"" | dbaccess -e testdb
#导出所有字段
echo "set environment sqlmode 'mysql';unload to t2.sql getinsert t2 " | dbaccess -e testdb
4,dns的优化
options timeout:0.1 attempts:1 single-request single-request-reopen