使用ij时,Derby列名称会被切断

时间:2014-05-16 18:27:48

标签: sql derby

当我输入“Describe [someTable];”时很长的列(超过20个字符)的列名被截断,&使用符号。例如,我有两列似乎被命名为WowThisIsAVeryLongC&。

当我运行select *语句时,列名也会被截断,因为它们中的数据只有2或3个字符长。我尝试使用系统调用表并选择将数据导出为CSV,但那些不会给我任何标题信息。 MaximumDisplayWidth仅更改显示的数据的宽度。我找不到任何方法来找出这些列的正确名称。这是我继承的数据库,所以我有点卡住了。

非常感谢任何和所有帮助。

3 个答案:

答案 0 :(得分:0)

尝试在IJ中使用help命令。这应该指向你 MaximumDisplayWidth Command还有ij.maximumDisplayWidth property

答案 1 :(得分:0)

如果使用的是Derby版本10.10+,则可以使用databaseMetaData工具。

实际上,您可以从describe '*'命令获得相同的输出:

ij> maximumdisplaywidth 1000;
ij> call syscs_util.syscs_register_tool( 'databaseMetaData', true );
Statement executed.
ij> select t.table_schem, t.table_name, c.column_name, c.type_name, c.DECIMAL_DIGITS, c.NUM_PREC_RADIX, c.COLUMN_SIZE, c.COLUMN_DEF, c.CHAR_OCTET_LENGTH, c.IS_NULLABLE 
from table( getTables( null, '%', '%' ) ) t, 
     table( getColumns( null, '%', '%', '%') ) c 
where c.table_schem = t.table_schem 
and c.table_name = t.table_name 
and t.table_type = 'TABLE' 
order by table_schem, table_name, column_name;

可在 java.sql.DatabaseMetaData 接口及其相应的方法名称和属性(请参阅Java API)中获取用于SQL子句的其他表和列属性。

(有关更多信息,请参见“ Derby工具和实用程序指南”中的“使用databaseMetaData可选工具”。)

答案 2 :(得分:0)

如果只是为了转储 select 语句的输出,知道数据值将被完整显示最多 128 个字符(或使用 MaximumDisplayWidth 命令设置值时更多),您可以强制列名通过人为地增加 SELECT 查询中输出的数据值的大小,它比下面的数据值要长以完整显示。例如:

ij> select TAG as longColumnNameForShortData, SERIAL as longColumnNameForSerial from ID;
LO&|LONGCOLUMN&
---------------
TM1|23594000
TF1|0
TS1|27188000

然后用:

ij> select CHAR(TAG,30) as longColumnNameForShortData, CHAR(SERIAL,30) as longColumnNameForSerial from ID;
LONGCOLUMNNAMEFORSHORTDATA    |LONGCOLUMNNAMEFORSERIAL
-------------------------------------------------------------
TM1                           |23594000
TF1                           |0
TS1                           |27190000

... 有点笨,但是可以。