KingBase
1、获取日期时间select TO_CHAR(NOW() ,'yyyy-MM-dd HH24:MI') A01;
1、获取日期时间
select TO_CHAR(NOW() ,'yyyy-MM-dd HH24:MI') A01;
添加年月日时分秒
CREATE TABLE PSKH_RESULTFLAG (
RECORDID VARCHAR(36 byte) NOT NULL,
CREATETIME TIMESTAMP NULL,
UPDATETIME VARCHAR2(36) NULL,
CONSTRAINT PK_PSKH_RESULTFLAG PRIMARY KEY (RECORDID)
);
INSERT INTO PSKH_RESULTFLAG(RECORDID,CREATETIME,UPDATETIME)VALUES('29392494-A2BB-4A2D-858D-13DF8746DEB2',NOW(),SYSDATE);
2、人大金仓数据库中判断为空,使用NVL函数,其他数据库使用IFNULL(MYSQL)
(1)MYSQL : SELECT IFNULL(MAX(jxkh0510), 0) AS jxkh0510 FROM jxkh54
(2)KingBase : SELECT NVL(MAX(jxkh0510), 0) AS jxkh0510 FROM jxkh54
3、WITH NO DATA 表示只拷贝表结构而不拷贝数据
CREATE TABLE TAB_NO_DATA AS SELECT * FROM TAB WITH NO DATA;
默认表示既拷贝表结构又拷贝数据
CREATE TABLE TAB_WITH_DATA AS SELECT * FROM TAB;
4、人大金仓数据(Kingbase)迁移工具使用
(1)本示例演示将SQLSERVER数据库迁移至Kingbase,详细如下
打开数据迁移工具
(2)配置原SQLSERVER数据库连接信息,如下图所示
(3)配置原Kingbase数据库连接信息,如下图所示
(4)新增数据库迁移任务,如下图所示
(5)点击源数据库设置,如
(6)点击目标数据库,选择需要迁移的表,如下
(7)执行迁移结果文件,如下
5、自动生成36位字符
(1)SELECT SYS_GUID_NAME() AS ID FROM PSKH66;
(2)SELECT GET_UUID() FROM PSKH07
6、获取列表第一行数据:select * from (select * from B01 order BY B00) where rownum=1;
7、TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
5、Kingbase锁表后解锁操作
(1).根据被锁表的表名,查询出oid(表名区分大小写)
select oid from sys_class where relname = '表名';
(2)根据查询出的oid,查询出pid
select pid from sys_locks where relation = 'oid';
(3)根据pid,强制结束该进程
select sys_terminate_backend(pid);
(4)补充:要是不知道哪张表被锁,可以通过下面sql分析
SELECT *FROM sys_stat_activity
WHERE
pid != (SELECT sys_backend_pid())
AND datname = '数据库名' AND usename = '模式名';
6、数据备份与还原
7、新增列、修改列、删除列、修改字段名称:
新增:ALTER TABLE A01 ADD COLUMN A0101 VARCHAR(100);
修改:ALTER TABLE A01 ALTER COLUMN A0101 TYPE VARCHAR(100);
删除:ALTER TABLE A01 DROP COLUMN A0101;
修改字段名称:ALTER TABLE A01 RENAME COLUMN Column_01 TO A0101;
10、获取第一行数据
SELECT
ROW_NUMBER,
DWNAME
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY B00) ROW_NUMBER,
(SUBSTRING(P22.QJCODE,3,4)||'年第'||SUBSTRING(P22.QJCODE,8,9)||'季度'||P65.JXKH6501) AS DWNAME
FROM PSKH65 P65
INNER JOIN PSKH22 P22 ON P65.JXKH2200=P22.JXKH2200
WHERE 1=1
AND B00 = #{B00}
AND P22.QJCODE = #{QJCODE}
AND P65.JXKH2200 = #{JXKH2200}
) P65
WHERE 1=1
AND P65.ROW_NUMBER = '1'
11、查询KingBase数据库版本,在客户端中执行 select version()
12、删除某个时间前一个小时的数据记录
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);// 当前时间前一个小时的时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Map<String,Object> map = new HashMap<String,Object>();
map.put("CREATETIME", df.parse(df.format(calendar.getTime())));
this.pmPskhKhsjdrMapper.deletePSKH_RESULTFLAGSQL(map);
<!-- CREATETIME:类型是TIMESTAMP -->
<update id="deletePSKH_RESULTFLAGSQL" parameterType="map">
DELETE FROM PSKH_RESULTFLAG WHERE CREATETIME <![CDATA[ < ]]> #{CREATETIME}
</update>
12、程序访问系统,提示
com.kingbase8.util.KSQLException: 致命错误: 已保留的连接位置为执行非复制请求的超级用户预留 (kbjdbc: autodetected server-encoding to be GB2312, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf)
解决方案:直接编辑数据库data目下的配置文件kingbase.conf将max_connections默认参数100调整到500,重启数据库即可。
13、kingbase表被删除以后,访问表时提示没有权限,需要如下重新授权
GRANT SELECT ON JXKH65 TO PUBLIC
14、拼接批量添加语句
SELECT
'INSERT INTO JXKH65(JXKH6500,JXKH2200,B00,JXKH6501,JXKH6502,JXKH6504,JXKH6505,NODEID,CREATETIME,PXH,ALLPXH)VALUES('''||UPPER(UUID())||''','||'''00000000-0000-0000-0000-000000000000'','''||st.nodeid||''','''||st.NODENAME||''','''||st.DESCRIPTION||''','''||st.parentid||''','''||st.pindex||''','''||st.nodeid||''','''''''||TO_CHAR(NOW(),'YYYY-MM-DD HH24:MI:SS')||''''''','''||st.pindex||''','''||st.pindex||''''||');' AS ISQL,
*
FROM "s_treenode" st ORDER BY pindex;
更多推荐
所有评论(0)