2012-05-29 71 views
0

我创建具有列A,列B,列和C的主表每当我尝试使用命令从另一个表中插入行:字符宽度超过

INSERT INTO MASTER 
select * from Table B 

我得到的错误消息“字符宽度突破”。我不知道为什么。

+1

您使用的数据库是?什么是netezza? – Andomar

+0

[Netezza](http://www.netezza.com/)是非常流行的数据仓库工具。它与Teradata竞争。 – DOK

+1

比较'Master'和'TableB'表的定义。一些char或varchar字段的大小可能不同。 –

回答

0

可能是Table B的一列或多列大小大于MASTER的相应列大小。

例如, - Table Bcolumn1可能是VARCHAR(255)MASTER'如果表MASTER的结构是完全相同与表B.

大概小号column A可能小于255

+0

我将主表的varchar语句更改为varchar(40) –

+0

使MASTER的列与表B相似。 – JHS

+0

我只能看到类型为变量不是字符的数量 –

0

检查是一个问题MASTER.colx是一个字符串(20),B.colx是一个字符串(25),或者可能是字符集问题(unicode/latin-1/utf-8/iso-8859-x)

0

考虑创建表MASTER为:

select * 
    into master 
    from tableB 
where 1=0 

这将保证两个表之间的列数据类型相同。然后你可以尝试再次插入。