-表:泛型项目
从ITEMPK IN的道具中删除(从属性描述符中选择PK,其中Lower(columnName)='p_orderminimun'和EnclosingTypePK in(从包含类型的PK中选择,其中itemtypecode在(从ydeployments中选择类型代码,其中wheretable(tablename)='genericitems'))和PersistenceTypePK IS NOT NULL);
从功能区中删除ItemPK IN(从属性描述符中选择PK,其中Lower(columnName)='p_orderminimun',并从EnclosingTypePK中删除(从组成类型中选择PK,其中itemtypecode in(从ydeployments中选择类型代码,其中wheretable(tablename)='genericitems'))和PersistenceTypePK IS NOT NULL);
从属性描述符中删除(在ITEMPK IN中进行选择(从属性描述符中选择PK在其中下(columnName)='p_orderminimun')和EnclosingTypePK在(从组成类型中选择PK,其中itemtypecode在(从ydeployments中选择类型代码,其中(表名)='genericitems'))和PersistenceTypePK NOT NULL);
从属性描述符DELETE FROM WHERE lower(columnName)='p_orderminimun'和EnclosingTypePK in(从compositiontypes中选择PK,其中itemtypecode in(从ydeployments WHERE lower(tablename)='genericitems'中选择类型代码))和PersistenceTypePK IS NOT NULL;
ALTER TABLE泛型项目DROP COLUMN p_orderminimun;
尽管这可能不是删除不需要的列的"正确"方法,但如果您需要删除数百个列,这可能会有所帮助:我们构建了一个更新任务(可以从hac更新页面运行),该任务生成一个sql脚本,该脚本将:
删除已部署的类型系统中未引用的任何属性的属性定义
删除引用的列
您可以从下面下载源代码。 将其放在扩展名src文件夹中,并通过添加有效的扩展名来修复@SystemSetup批注。 如果您不使用注释来配置Spring Bean,则必须添加对Spring xml配置的引用。 构建完成后,您将在扩展程序中找到一个可配置的任务:
激活此任务不会对您的数据库运行任何操作,但会生成一个您可以测试和查看的sql脚本(该脚本将直接写入标准日志中)。 在下面,您可以找到为单个不需要的字段生成的示例脚本:
检查脚本,并小心应用它。 在运行它之前,您需要在hac维护部分中运行"清理类型系统"。 跑步时关闭杂物。
要删除的列的检测方式应该非常"安全",因为脚本实际上会计算完整的hybris模式并将其与现有模式进行比较。 但是,用于从类型配置中删除属性的脚本是通过跟踪从hmc生成的查询而构建的,可能不涉及任何用例。 如果只需要删除一些属性,则可能需要从hmc中手动删除属性。
我们成功使用此脚本在基于hybris 5.1的项目中删除了250多个未引用的列。 但是请小心,此脚本将删除列并以不受支持的方式修改hybris类型配置,并且可能会破坏您的数据。 在生产系统上运行之前,请进行备份并仔细测试
您可以在此处下载源代码:
http://goo.gl/Lp123x
HTH,fabrizio
一周热门 更多>