我使用赛贝斯ASE 15.7和面临的问题,而代理表插入默认值。我们希望将数据从源表迁移到目标表,其中目标表在远程服务器中具有具有非空值和默认值的附加列。请参阅以下表格详情。
源表:
CREATE TABLE TABLE_SOURCE
(
COL1 INT,
COL2 INT,
COL3 INT
)
目标表:
CREATE TABLE TABLE_TARGET
(COL1 INT,
COL2 INT,
COL3 INT,
COL4 INT Default 0 NOT NULL
)
在源数据库中创建代理表:
CREATE Proxy_Table TAB_TARGET AT 'TGT_SERVER.DB.DBO.TABLE_TARGET'
在Source中,我们有三个列的详细信息,我们用它来构建查询。
脚本:
INSERT INTO TAB_TARGET (COL1,COL2,COL3) values (1,2,3)
错误:
The column COL4 in table TAB_TARGET does not allow null values., Error 233, Line 1
虽然我们已经声明了COL4的默认costraint,但它不接受通过代理表。有没有办法解决这个问题。我们有超过5K表,其中用户正在迁移数据,这个问题存在于100多个表中。
有没有办法插入到目标表中而不出现NOT NULL问题
以下内容显示在参考手册的用法部分:命令:创建代理表:
"列缺省值和规则不通过创建proxy_table导入;请使用创建现有表,其中可以定义列属性。"
注:此参考来自ASE 16手册;我在ASE 15.7 SP100手册中找不到这条评论;我假设ASE 15.7手册编写时忽略了这个细节。
由于您要处理大量的表,我假设您已经准备好了一些脚本来加速迁移过程(并将手动创建5K代理表和相关INSERT语句可能产生的错误降至最低)。
如果这一假设是正确的,并且您不希望创建5K create existing table命令(包括所有那些烦人的列细节)的麻烦,那么我想知道生成带有显式默认值的INSERT语句(相对而言)是否更容易,例如:
INSERT INTO TAB_TARGET (COL1,COL2,COL3,COL4) values (1,2,3,0)
至于如何在系统表中找到默认值。。。
示例:
-- inline default value of '0' assigned to column 'b'
create table t1 (a int, b int default 0 not null, c int)
go
-- standalone default named 'myzero' with default value of '0'; bound to column 'c'
create default myzero as 0
go
sp_bindefault myzero, 't1.c'
go
sp_help t1
go
...
Column_name ... Default_name
----------- ... --------------
a ... NULL
b ... t1_b_467529718 -- inline default
c ... myzero -- standalone default
...
-- contents of syscolumns.cdefault
select name, cdefault from syscolumns where id = object_id('t1') order by colid
go
name cdefault
---------- -----------
a 0
b 467529718
c 387529433
-- contents of syscomments.text
select id,text from syscomments where id in (467529718,387529433) order by id
go
id text
--------- ---------------------------
467529718 DEFAULT 0 -- inline default
387529433 create default myzero as 0 -- standalone default
-- pulling this all together:
select col.name, com.text
from syscolumns col,
syscomments com
where col.id = object_id('t1')
and col.cdefault = com.id
order by 1
go
name text
---------- ------------------------------
b DEFAULT 0 -- inline default
c create default myzero as 0 -- standalone default
从这里,您应该能够根据syscomments的格式解析出默认值。文本列和实际的默认值(即,它是数字的吗?它是一个字符串,可能带有嵌入的空格吗?它是一个函数引用,例如getdate())。
前几天我开始开发一个bukkit插件,目的是在用户输入“/hello”时在文本窗口中返回hello。但是,这不起作用,因为我无法在eclipse中导入命令行。有什么建议吗?它说,“命令不能解析为类型”
问题内容: 我正在尝试开发V2插件。我可以在插件配置中使用“ docker plugin create”和“ docker plugin enable”命令。但是,’docker plugin push’命令失败并显示以下错误 这是我的码头工人版本 我已确保该存储库存在并且可以正确访问它。我能够推送其他图像,但只有“ docker plugin push”失败。在调试模式下,docker吐出此错误
问题内容: 问题是 我的配置是 设置conf / hadoop-env.sh 我知道有一个与此问题类似的问题(http://codingdict.com/questions/122917)。但是我已经在这里安装了Sun jdk。因此,任何帮助将不胜感激。 问题答案: 这实际上不是Hadoop问题。Hadoop不使用JPS。 如果找不到JPS,则必须将其放入路径或创建别名。可以在下找到JPS可执行文
我是ImageMagick新手,我只是尝试在命令行中运行convert命令,如下所示: 获取错误消息: 转换:无法打开图像/主页/674390/桌面/罗斯。jpg“:没有这样的文件或目录@错误/blob。c/OpenBlob/2643。转换:此图像格式没有解码委托/home/674390/Desktop/rose。jpg“@错误/构成。c/ReadImage/555。转换:未定义图像“/主页/67
我试图在我的ksh程序的curl命令中使用两个变量,但它不起作用。
它是CentOS 7,已经在我的CentOS中安装了vi和vim,我可以使用它们。我在CentOS中运行docker,当我执行下面这一行时: 我不能在solr容器中使用vi/vim: 为什么会这样?我该如何修复它,以便使用vi/vim在docker容器中编辑文件?