问题
志辉 陈 · 七月 14

如何快速备份一张码表?

在更新医保码库前,我们想对旧码库做个备份,以防更新过程失败,还可以还原。
oracle支持 CREATE TABLE AS ..... 的语法快速备份一张表,cache 似乎不支持这个语法,
大家平时是怎么备份一张码表的呢?

 

最好是像 oracle 那样一条命令搞定的那种。

产品版本: Caché 2016.1
$ZV: Cache for Windows (x86-64) 2016.2.3 (Build 907_11_20753U) Mon Apr 5 2021 19:51:59 EDT
0
0 53
讨论 (4)2
登录或注册以继续

CREATE TABLE Sample.YoungPeople

AS SELECT Name,Age

FROM Sample.People

WHERE Age < 21

或者

DO $SYSTEM.SQL.Schema.QueryToTable("SELECT Name,Age,AVG(Age) AS AvgInit FROM Sample.Person WHERE Age < 21","Sample.Youth",1,.errors)

如果您是2016版本,可以使用$SYSTEM.SQL.QueryToTable()
但是这个方法只复制查询中指定的字段的定义,包括数据类型、最大长度和最小值/最大值,但不复制字段的数据约束,如默认值、要求值或唯一值
 

前一条回复估计卡住了,不好意思

我不知道你的使用场景,但是面对此需求我一般是先建一张和之前表名字不一样的表,然后通过

insert into 表名 select * from 表名。由于cache在往表插入的时候数据的时候不能插入ID,所以正确的写法是把除了ID之外的字段排列一下,如下所示的写法,希望可以帮到你。

INSERT INTO BKIP_SOAV2_ESB.SERVICE
(DELETEFLAG, boWsdlUrl, createDate, esbWsdlUrl)
SELECT DELETEFLAG, boWsdlUrl, createDate, esbWsdlUrl
FROM BKIP_SOA_ESB.SERVICE; 

要先建表、再 INSERT 数据,步骤没有 Oracle 一条命令搞定方便。

谢谢您。

m 我建议直接备份global。如果有问题,重新导入导入global。然后抛下索引。