首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在所有存储过程中更改表的模式名称

在存储过程中更改表的模式名称涉及以下步骤:

  1. 创建存储过程:首先,定义一个具有所需模式的存储过程。例如,如果您要从MyTable模式切换到NewTable模式,您需要创建一个存储过程rename_table(),其中执行ALTER TABLE语句将MyTable模式替换为NewTable模式。
  2. 编写存储过程代码
代码语言:sql
复制
DELIMITER $$
CREATE PROCEDURE rename_table()
BEGIN
  DECLARE old_name VARCHAR(64);
  DECLARE new_name VARCHAR(64);
  DECLARE cur CURSOR FOR SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', table_name, ' RENAME TO ', new_name, ';');
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET @ErrorMsg = ERROR_MESSAGE();
  
  OPEN cur;
  
  my_loop: LOOP
    FETCH cur INTO old_name;
    IF @ErrorMsg IS NULL THEN
      UPDATE INFORMATION_SCHEMA.COLUMNS SET DATA_TYPE = SUBSTRING_INDEX(SUBSTRING_INDEX(DATA_TYPE, '(', 1), ')', -1) WHERE TABLE_NAME = old_name AND DATA_TYPE LIKE '%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%\_%' AND DATA_TYPE NOT IN ('BLOB', 'TEXT', 'VARBINARY');
      SET @ErrorMsg = NULL;
    END IF;
    
    IF LEADING CHARACTER IN TABLE old_name REGEXP '^(A|b|B)$|^(0|1|2|3|4|5|6|7|8|9)$|^(a|A|b|B|c|C|d|D|e|E|f|F|g|G|h|I|j|J|k|K|m|M|n|O|p|P|q|Q|r|S|t|T|u|V|w|X|y|Y|z|Z|_{3})$' AND LEFT(old\_name, 1) NOT IN 'a|A|b|B|c|C|d|D|e|E|f|F|g|G|i|I|j|J|k|K|l|L|m|M|n|O|p|P|q|Q|r|S|t|U|v|W|w|X|y|Y|z'` AND TABLE\_SCHEMA <> 'information\_schema' THEN
      
      SET new_name = CASE WHEN REGEXP_CONTAINS(new_name, '{[a-zA-Z1-9]{1,255}') THEN SUBSTRING_INDEX(SUBSTRING_INDEX(new\_name, '{', 1), '}', -1)
                      WHEN REGEXP_CONTAINS(new\_name, '{[a-zA-Z0-9_]{1,255}') THEN SUBSTRING_INDEX(SUBSTRING_INDEX(new\_name, '{', 1), '}', -1)
                      ELSE SUBSTRING_INDEX(new\_name, '.', 1);
      
      REPLACE(new\_name, '__', '\\_');
      
      SET @ErrorMsg = NULL;
    END IF;
    
    IF old\_name ~ '.[a-zA-Z]{1,255}' THEN
      SET new\_name = CONCAT(new\_name, '_0');
    END IF;
      
    IF OLD\_NAME NOT IN (SELECT TABLE\_NAME FROM INFORMATION\_SCHEMA.TABLES WHERE TABLE\_SCHEMA = DATABASE()) THEN
      ALTER TABLE INFORMATION\_SCHEMA.TABLES ADD COLUMN TABLE\_NAME TEXT NOT NULL;  
    END IF;
       
    SET old\_name = new\_name;
    
    IF @ErrorMsg IS NOT NULL THEN
      LEAVE my\_loop;
    END IF;
  END LOOP my\_loop;
  
  DEALLOCATE PREPARE stmt;
  CLOSE cur;
END$$
DELIMITER ;
CALL rename_table();
  1. 运行存储过程:成功将表结构更改为新名称后,您可以使用执行该存储过程的原始表名的存储过程。
  2. 更新列数据类型和别名:完成更改后,运行以下查询更新INFORMATION\_SCHEMA.COLUMNS表以反映表名称更改:
代码语言:sql
复制
UPDATE I
SET DATA_TYPE = SUBSTRING_INDEX(SUBSTRING_INDEX(DATA_TYPE, '(', 1), ')', -1), TABLE\_NAME = NEW\_NAME WHERE TABLE\_Schema = DATABASE() AND TABLE\_Name = OLD\_NAME;
  1. 检查成功:完成上述步骤之后,您应该更改了表模式名称。重新运行存储过程以执行必要的表重新命名操作。

注意:在更改表模式名称时,务必要确保INFORMATION\_SCHEMA.COLUMNS只包含用于查询和修改表模式名称的信息,以便确保数据库的安全和完整性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何所有实体类用相同名称主键(很有力问题,比如所有实体主键都用ID)

例如:有两个userbases和products 两个主键分别为UserID和ProductID,那么,我想问有没有一种方法把它们主键统一起来,用一个字段名称表示呢?...接口,没错就是接口,我们知道接口中一切,实现类中都必须被实现,想一下,如果在接口中定义一个object类型或者string类型字段,让所以子类都为它赋值,那不就OK了吗?.../// public interface IEntity { /// /// 为了主键统一,而手动设置.../// string ID { get; } } 那如果有一个userbase实体类,它会继承这个统一接口,它代码就变成了: public...:"+entity.ID); } } 方法里调用: bobo b = new bobo(); b.hello(new Race { Id = 1

1.3K50
  • 查询hudi数据集

    一旦提供了适当Hudi捆绑包, 就可以通过Hive、Spark和Presto之类常用查询引擎来查询数据集。 具体来说,写入过程中传递了两个由table name命名Hive。...增量视图是通过查询上表之一实现,并具有特殊配置, 该特殊配置指示查询计划仅需要从数据集中获取增量数据。 接下来,我们将详细讨论每个查询引擎上如何访问所有三个视图。...| | |extractSQLFile| 上要执行提取数据SQL。提取数据将是自特定时间点以来已更改所有行。| | |sourceTable| 源名称Hive环境属性中需要设置。...| | |targetTable| 目标名称。中间存储目录结构需要。| | |sourceDataPath| 源DFS基本路径。这是读取Hudi元数据地方。...该工具当前局限性在于缺乏在混合模式(正常模式和增量模式)下自联接同一支持。

    1.7K30

    Oracle 20c新特性:TRANSFORM支持索引压缩

    导入时重新创建这些对象时,数据泵会生成与导出时与那些对象设置匹配IM列存储子句。 如果在导入时指定了N,则数据泵将从具有一个所有对象中删除IM列存储子句。...如果没有存储空间中对象IM列存储子句,则该对象将从空间继承IM列存储子句。...如果值为 DEFAULT,则省略关键字(SECUREFILE或BASICFILE),并使用默认存储创建LOB段。 指定此转换会更改作业中所有LOB存储,包括为实例化视图提供存储。...如果在导入时指定了N,则: 创建新对象和类型过程中,禁止分配导出OID。而是分配一个新OID。禁止分配导出OID对克隆模式很有用,但不会影响引用对象。...例如: TRANSFORM=TABLE_COMPRESSION_CLAUSE:\"COLUMN STORE COMPRESS FOR QUERY HIGH\" 指定此转换将更改作业中所有压缩类型,包括为实例化视图提供存储

    98630

    Debezium 2.0.0.Final Released

    本节中,我们将深入研究相关更改,并讨论这些更改如何影响Debezium所有用户。 依赖Java 11 我们想要向Java 11过渡已经有一段时间了,我们觉得Debezium 2.0是合适时机。...由于多分区模式现在是默认,这个新database.names选项可以使用逗号分隔数据库名称列表来指定,如下所示: database.names=TEST1,TEST2 本例中,将连接器配置为从同一主机安装上两个唯一数据库捕获更改...从Debezium 2.0 Beta2开始,许多连接器属性都用新名称重新定位了。这是一个突破性更改,会影响升级过程中大部分连接器部署。 Debezium以前使用前缀“database.”...以前Debezium迭代中,一些模式定义没有显式名称,也没有显式版本控制。在这个版本中,我们已经开始确保所有模式定义都有一个显式名称和与其相关联版本。...但是,如果您目前正在使用Schema Registry来注册结果,请注意此更改可能会在升级过程中导致模式兼容性问题。

    3.1K20

    解密openGauss DB4AI框架内部机理

    由于已创建快照无法更改,因此开始数据整理之前,必须“准备”快照。准备好快照数据可以进行协作修改,为模型训练做准备,特别是为数据管理做准备。...此外,快照通过将每个操作作为元数据记录在DB4AI系统目录中,自动跟踪所有更改,为数据提供完整集成历史。 快照准备完成后,可以发布快照。...最后,清除快照,删除模式数据以及视图、恢复存储空间。需要注意是,快照管理为了实施严格模型来源无法清除具有依赖快照。 利用GUC参数,snapshot使用物化存储模式或者增量存储。...增量存储模式中,新快照对应视图和数据只保存相对父快照修改内容,从而大大降低存储空间。...算子执行计算过程中,把扫描得到数据输入到算法模型中进行计算和更新,最后根据超参设置迭代条件结束算子执行。

    60730

    HMS数据库设置和优化

    在此过程中,您将在与 HiveServer 不同节点/集群上安装数据库,以便与 Hive、Impala、Spark 和其他组件共享 Hive 元存储 (HMS)。...一个循序渐进过程向您展示了如何设置一些属性名称和值来代替hive set key=value命令行上使用,这是不受支持。...以相同方式, Metastore 主机(必需)或所有主机(可选)上指定其他必需连接属性,如下例所示。...优化元存储 与其他调优过程类似,一般 Metastore 调优涉及调整和测试,直到您发现可以提高 Metastore 性能更改组合。调整建议包括硬件和软件更改。...通常Metastore 调优 尝试进行以下更改以调整 HMS 性能: 确保单个查询访问不超过 10,000 个分区。如果查询连接,计算跨所有访问组合分区计数。 调整后端(RDBMS)。

    1.2K30

    使用管理门户SQL接口(二)

    可以一个模式或多个模式中筛选模式,或筛选/视图/过程名(项)。 搜索模式模式名、点(.)和项目名组成——每个名称由文字和通配符某种组合组成。字面值不区分大小写。...可选地,使用下拉“应用到”列表来指定要列出项目类别:、视图、过程、缓存查询,或以上所有。 默认为All。 “应用到”下拉列表中指定任何类别都受到筛选器或模式限制。...“应用到”中没有指定类别继续名称空间中列出该类别类型所有项。 可选地,单击System复选框以包含系统项目(名称以%开头项目)。 默认情况下不包含系统项。...Browse选项卡 Browse选项卡提供了一种方便方式,可以快速查看名称空间中所有模式,或者名称空间中经过过滤模式子集。...方法或查询名称生成类方法或类查询名称;此名称标识符和类实体名称中描述。运行过程链接提供交互方式选项。 存储过程SQL语句:为此存储过程生成SQL语句列表。与命名空间SQL语句相同信息。

    5.1K10

    Mysql服务器SQL模式 (官方精译)

    创建数据并将其插入分区后,更改服务器SQL模式可能会导致此类行为发生重大变化,并可能导致数据丢失或损坏。强烈建议您一旦创建了使用用户定义分区表格,就不要更改SQL模式。...如果您使用是非事务性存储引擎,则这可能不是您想要,因为错误之前进行数据更改可能无法回滚,从而导致“ 部分完成 ”更新。...无论是否IGNORE_SPACE启用,总是允许UDF或存储函数名称后面有空格 。 有关进一步讨论 IGNORE_SPACE,请参见 第9.2.4节“函数名称分析和解析”。...STRICT_ALL_TABLES 为所有存储引擎启用严格SQL模式。无效数据值被拒绝。有关详细信息,请参阅 严格SQL模式。...它还提供了确定应用程序是否需要修改以SQL模式更改之前和之后表现相同指导原则。 下表显示了如何控制MySQL 5.7.4到5.7.7以及MySQL 5.7.4到5.7.7以外版本除零处理。

    3.4K30

    Oracle 在线重定义(上)

    REDEF_TABLE 当您想要更改以下属性时, 该过程使您能够一个步骤中执行在线重新定义存储属性: 空间更改,包括、分区、索引或 LOB 列空间更改 压缩类型更改,包括、分区、索引键或...此外,重新定义过程完成或终止之前, 8)执行FINISH_REDEF_TABLE过程完成重新定义。在此过程中,原始很短时间内以独占模式锁定,与原始数据量无关。...某些情况下,您可能希望撤消对表在线重定义。 例如,操作重定义之后性能可能比重定义之前性能更差。 在这些情况下,可以将回滚到其原始定义,同时保留重新定义后对表所做所有DML更改。...在线重定义回滚主要用于重定义更改存储特性,而这些更改意外导致性能下降情况。...请注意,使用这种方法,重新定义后主键约束和索引名称会发生变化。另一种避免错误和名称更改方法是定义没有主键约束临时。在这种情况下,主键约束和索引是从原始中复制

    29421

    「Hudi系列」Hudi查询&写入&常见问题汇总

    ROLLBACK - 表示提交/增量提交不成功且已回滚,删除写入过程中产生所有部分文件。 SAVEPOINT - 将某些文件组标记为"已保存",以便清理程序不会将其删除。...简而言之,映射文件组包含一组记录所有版本。 存储类型和视图 Hudi存储类型定义了如何在DFS上对数据进行索引和布局以及如何在这种组织之上实现上述原语和时间轴活动(即如何写入数据)。...通过写入过程中执行同步合并以更新版本并重写文件。 读时合并 : 使用列式(例如parquet)+ 基于行(例如avro)文件格式组合来存储数据。...| | |extractSQLFile| 上要执行提取数据SQL。提取数据将是自特定时间点以来已更改所有行。| | |sourceTable| 源名称Hive环境属性中需要设置。...所有文件都以数据集分区模式存储,这与Apache HiveDFS上布局方式非常相似。 11. 如何写入Hudi数据集 通常,你会从源获取部分更新/插入,然后对Hudi数据集执行写入操作。

    6.3K42

    升级到 MySQL 8.0,付出了惨痛代价!

    这些差异通常会导致复制和模式验证工具出现问题; 某些复制失败错误代码发生了变化,我们必须修复我们自动化程序来正确处理它们; 8.0 版本数据字典废弃了 table.frm 文件,但是我们一些自动化系统使用它们来检测模式修改...不幸是,并非所有这些问题都是测试过程中发现。例如,事务死锁是应用程序迁移过程中发现研究不同解决方案时,我们可以暂时将这些应用程序回滚到 5.6 版本。...我们限制了内存使用,只启用了少量工具,并对代码进行了更改,以禁用无法手动关闭。 然而,并不是所有增加内存都是分配给 performance_schema 。...使用自动转义模式对象名称 mysql 客户端软件,有助于减少兼容性问题数量。 一个副本集中支持两个主版本非常困难。一旦副本集将其主实例升级为 8.0,最好尽快禁用并移除 5.6 实例。...我们一直考虑如何在 MyRocks 上支持像即时DDL这样存储引擎特性。总的来说,新版本大大扩展了 MySQL@Facebook 功能。

    1.5K20

    MySQL8 中文参考(八十)

    要解决源数据库、或列名称副本中被视为保留字问题,请执行以下操作之一: 源数据库上使用一个或多个ALTER TABLE语句来更改任何数据库对象名称,其中这些名称副本中被视为保留字,并将使用旧名称任何...如果触发器需要代码中多个结果值,可以将代码放入存储过程中,并使用OUT参数返回这些值。 删除所有触发器。 为创建一个新触发器,调用刚刚创建存储过程。...因此,使用STATEMENT模式时,此类语句复制可能不安全。 default_storage_engine系统变量不会被复制,无论日志记录模式如何;这旨在促进不同存储引擎之间复制。... MySQL 8.0.26 中,对复制仪器名称进行了不兼容更改,包括线程阶段名称,其中包含术语“master”,被更改为“source”,“slave”,被更改为“replica”,以及“mts”...有关组中版本兼容性完整信息以及升级过程中如何影响组行为,请参阅第 20.8.1 节,“组中组合不同成员版本”。

    10510

    深入解析MySQL 8:事务数据字典变革

    一、事务数据字典引入背景 MySQL 8之前版本中,元数据分散地存储多个地方,包括元数据文件、非事务性和特定于存储引擎数据字典中。...这意味着所有的系统元数据,包括结构、列信息、索引、触发器、存储过程和函数等,现在都存储InnoDB中,从而确保了元数据操作(如创建、修改列等)原子性、一致性和隔离性。...简化管理:不再需要维护多种不同类型元数据文件和所有数据字典信息都集中存储InnoDB中,简化了数据库管理和备份。...WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name'; 这个查询会返回指定数据库中指定所有名称...这些语句现在可以更高效地执行,并且执行过程中提供了更好并发性。

    12210

    SQL模糊查询语句(like)

    大家好,又见面了,我是你们朋友全栈君。 确定给定字符串是否与指定模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定字符完全匹配。...下面的示例将局部 char 变量传递给存储过程,然后使用模式匹配查找某个作者所有著作。在此过程中,作者姓将作为变量传递。...LIKE 'sys%' 说明 请注意:系统可以随版本不同而更改。...推荐使用信息架构视图或适用存储过程处理 SQL Server 系统。 若要查阅非系统所有对象,请使用 NOT LIKE ‘sys%’。...可能仅得到 14 个名称(而不是 19 个),除了系统名称外,所有以 s 开始或第二个字母为 y 或第三个字母为 s 名称也都将从结果中消除。

    2.7K30

    spring batch数据库数据结构

    该JobRepository负责将每个Java对象保存并存储到其正确中。本附录详细介绍了元数据以及创建时许多设计决策。查看下面的各种创建语句时,意识到所使用数据类型尽可能通用是很重要。...示例DDL脚本 Spring Batch Core JAR文件包含用于为多个数据库平台创建关系示例脚本(这些脚本又由作业存储库工厂bean或名称空间等效项自动检测到)。...FILTER_COUNT:从此执行过滤出项目数量。 WRITE_COUNT:执行期间写入和提交项目数量。 READ_SKIP_COUNT:执行过程中跳过项目数量。...WRITE_SKIP_COUNT:执行期间写入时跳过项目数量。 PROCESS_SKIP_COUNT:执行过程中跳过项目数量。 ROLLBACK_COUNT:执行期间回滚次数。...国际和多字节字符 如果您在业务处理中使用多字节字符集(例如中文或西里尔语),那么这些字符可能需要在Spring Batch模式中保留。许多用户发现,只需将模式更改为VARCHAR 列长两倍就足够了。

    4.5K80

    使用SQL Shell界面(一)

    无论您是否更改名称空间和/或退出并重新进入SQL Shell,这些数字终端会话期间都将按顺序分配。这些分配语句编号允许重新调用以前SQL语句,如下所述。...例如,通过使用SET $NAMESPACE命令将InterSystems IRIS命名空间更改为包含要引用SQL存储过程命名空间。可以使用SQL Shell!...名称区分大小写。SQL Shell提示符下键入BROWSE,以列出当前名称空间中架构。“架构:”提示下,按名称或编号选择一个架构。这将列出架构中和视图。...“Field:”提示下,按数字或名称选择一个字段,或指定*以列出所有字段。这列出了详细字段信息。“Map:”提示下,按数字或名称选择地图,或指定*列出所有Map。这列出了详细Map信息。...如果指定输入参数多于存储过程中定义参数,则SQL Shell会发出SQLCODE -370错误。可以使用文字(“字符串”),主机变量(:var)和输入参数(?)任意组合为存储过程指定参数值。

    1K10

    Excel VBA 操作 MySQL(十一,十二,十三)

    Excel VBA中对MySQL数据库中表格进行操作,包括重命名和删除等,需要执行相应SQL语句。...要获取有关MySQL数据库模式信息,如表格结构、列信息等,可以使用SQL查询语句查询系统表格(System Tables)或信息模式(Information Schema)。...("Sheet1") ' 使用工作名称,你可以根据需要更改 Dim iRow As Integer iRow = 2 ' 从第二行开始,根据需要更改 Do Until...可以根据需要修改SQL查询语句和数据显示方式,以满足不同需求。这个示例只是一个基本框架。Excel VBA中生成MySQL数据库中数据透视需要使用PivotTable对象和数据透视表字段。...可以根据需要修改代码,以满足实际需求,例如更改查询语句、字段名称、数据透视位置和样式等。这个示例只是一个基本框架,可以根据你具体情况进行自定义。

    25810
    领券