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;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐