广告
返回顶部
首页 > 资讯 > 数据库 >Sqlserver中怎么修改在线表的表字段类型
  • 304
分享到

Sqlserver中怎么修改在线表的表字段类型

2024-04-02 19:04:59 304人浏览 八月长安
摘要

这篇文章给大家介绍sqlserver中怎么修改在线表的表字段类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 原本很多字段都是nvarchar类型,因为

这篇文章给大家介绍sqlserver中怎么修改在线表的表字段类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

原本很多字段都是nvarchar类型,因为nvarchar类型的字段无法添加索引,所以要在线把表的字段类型修改为varchar。
执行脚本如下:
BEGIN TRANSACTioN
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
Go
CREATE TABLE dbo.Tmp_events
(
id int NOT NULL IDENTITY (1, 1),
transaction_id varchar(255) NULL,
trans_no varchar(255) NULL,
broker varchar(32) NULL,
code varchar(100) NULL,
consumer_id varchar(255) NULL,
consumer_code varchar(100) NULL,
consumer_name nvarchar(255) NULL,
description varchar(100) NULL,
comment nvarchar(255) NULL,
execution_group varchar(50) NULL,
input_ts bigint NOT NULL,
output_ts bigint NOT NULL,
provider_id varchar(100) NULL,
provider_code varchar(50) NULL,
provider_name nvarchar(255) NULL,
request_body nvarchar(MAX) NULL,
request_header nvarchar(MAX) NULL,
request_ts bigint NOT NULL,
response_body nvarchar(MAX) NULL,
response_header nvarchar(MAX) NULL,
response_ts bigint NOT NULL,
service_id varchar(50) NULL,
service_code varchar(50) NULL,
service_name nvarchar(255) NULL,
service_version varchar(50) NULL,
service_url varchar(255) NULL,
category_name varchar(50) NULL,
source varchar(50) NULL,
type varchar(50) NULL
)  ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_events SET (LOCK_EScalaTION = TABLE)
GO
SET IDENTITY_INSERT dbo.Tmp_events ON
GO
IF EXISTS(SELECT * FROM dbo.events)
EXEC('INSERT INTO dbo.Tmp_events (id, transaction_id, trans_no, broker, code, consumer_id, consumer_code, consumer_name, description, comment, execution_group, input_ts, output_ts, provider_id, provider_code, provider_name, request_body, request_header, request_ts, response_body, response_header, response_ts, service_id, service_code, service_name, service_version, service_url, category_name, source, type)
SELECT id, CONVERT(varchar(255), transaction_id), CONVERT(varchar(255), trans_no), CONVERT(varchar(32), broker), CONVERT(varchar(100), code), CONVERT(varchar(255), consumer_id), CONVERT(varchar(100), consumer_code), CONVERT(nvarchar(255), consumer_name), CONVERT(varchar(100), description), CONVERT(nvarchar(255), comment), CONVERT(varchar(50), execution_group), input_ts, output_ts, CONVERT(varchar(100), provider_id), CONVERT(varchar(50), provider_code), CONVERT(nvarchar(255), provider_name), request_body, request_header, request_ts, response_body, response_header, response_ts, CONVERT(varchar(50), service_id), CONVERT(varchar(50), service_code), CONVERT(nvarchar(255), service_name), CONVERT(varchar(50), service_version), CONVERT(varchar(255), service_url), CONVERT(varchar(50), category_name), CONVERT(varchar(50), source), CONVERT(varchar(50), type) FROM dbo.events WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_events OFF
GO
DROP TABLE dbo.events
GO
EXECUTE sp_rename N'dbo.Tmp_events', N'events', 'OBJECT' 
GO
ALTER TABLE dbo.events ADD CONSTRaiNT
PK__esb_even__3213E83FA9B6FB29 PRIMARY KEY CLUSTERED 
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]


GO
COMMIT

可以看出,sqlserver进行修改表字段类型其实就是建立一个新表,把老表的数据转换类型后插入到新表,然后drop掉老表。
再对新表的字段添加索引即可。


因为整个过程是在一个事务中进行的,所以会表。


测试下来。
在非业务繁忙期的一个在线表369W条左右的数据量,整个在线修改表字段类型消耗了14分32秒。


关于Sqlserver中怎么修改在线表的表字段类型就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Sqlserver中怎么修改在线表的表字段类型

本文链接: https://www.lsjlt.com/news/58400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Sqlserver中怎么修改在线表的表字段类型
    这篇文章给大家介绍Sqlserver中怎么修改在线表的表字段类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 原本很多字段都是nvarchar类型,因为...
    99+
    2022-10-18
  • mysql怎么修改表字段的类型
    要修改MySQL表中的字段类型,您可以使用ALTER TABLE语句。以下是修改表字段类型的基本语法:ALTER TABLE tab...
    99+
    2023-10-20
    mysql
  • oracle怎么修改表字段数据类型
    要修改Oracle表的字段数据类型,可以使用ALTER TABLE语句。以下是修改表字段数据类型的步骤:1. 打开Oracle SQ...
    99+
    2023-10-07
    oracle
  • php怎么修改数据表的字段类型
    在 PHP 中,修改数据表的字段类型是一项非常重要的操作。当我们需要通过代码来对数据库进行维护或更新时,我们经常会遇到需要修改表字段类型的情况,这包括字符集、数据类型、长度等。在本篇文章中,我会向你介绍如何通过 PHP 来修改数据表的字段类...
    99+
    2023-05-14
    php 数据库
  • php如何修改数据表的字段类型
    这篇文章主要介绍“php如何修改数据表的字段类型”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何修改数据表的字段类型”文章能帮助大家解决问题。在 PHP 中,修改数据表的字段类型是一项非常重...
    99+
    2023-07-05
  • navicat修改表或字段中字符集类型的方法
    小编给大家分享一下navicat修改表或字段中字符集类型的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在创建数据库的时候,您可以给数据库设置一个字符集,也可以在创建表的时候给表一个默认的...
    99+
    2022-10-18
  • mysql中怎么修改表字段
    mysql中怎么修改表字段,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。--修改表字段CREATE TABLE registe...
    99+
    2022-10-18
  • php怎么更改数据表的字段类型
    在数据库开发中,我们经常需要更改数据表字段类型。有时候,我们需要将一个字段从数字类型更改为字符串类型或者日期类型更改为字符串类型。在这篇文章中,我们将学习如何使用PHP来更改数据表字段类型。连接数据库首先,我们需要使用PHP连接到数据库。我...
    99+
    2023-05-14
    数据库 php
  • oracle怎么修改表中某一字段的值
    要修改Oracle数据库表中某一字段的值,可以使用UPDATE语句。 语法如下: UPDATE table_name SET col...
    99+
    2023-10-24
    oracle
  • MySQL怎么修改数据表中字段名
    要修改MySQL数据表中的字段名,可以使用ALTER TABLE语句。具体步骤如下: 使用ALTER TABLE语句并指定要修改的...
    99+
    2023-10-30
    MySQL
  • mysql更改表中某字段数据类型的案例
    mysql更改表中某字段数据类型的案例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!在mysql中,可以使用“ALTER ...
    99+
    2022-10-18
  • SQL中怎么修改多表多字段的信息
    这篇文章将为大家详细讲解有关SQL中怎么修改多表多字段的信息,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。之前修改两张及以上表的时候,总得需要用几次语句才修...
    99+
    2022-10-18
  • mysql怎么修改表中数据类型
    mysql修改表中数据类型的方法:语法格式:ALTER TABLE <表名> MODIFY <字段名> <数据类型>将name字段的数据类型由VARCHA...
    99+
    2022-10-06
  • Sequoiadb中怎么查看表字段的数据类型
    今天就跟大家聊聊有关Sequoiadb中怎么查看表字段的数据类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。【问题详细描述】 如何查看表...
    99+
    2022-10-18
  • Oracle在表中有数据的情况下修改字段类型或长度的解决方法
    oracle 数据库如何在表中有数据的情况下,修改表字段的类型或者增加表字段的长度解决方法 我们偶尔需要在已有表,并且有数据的情况下,修改其某个字段的类型或改变他的长度,但是因为表中有数据,所以不可以直接修改,需要换个思...
    99+
    2022-10-11
  • MySQL中怎么批量修改数据表字段内容
    本篇文章为大家展示了MySQL中怎么批量修改数据表字段内容,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  如何批量修改MySQL数据表字段内容  在PHPwind...
    99+
    2022-10-18
  • 怎么在mongodb中删除表中的字段
    在mongodb中删除表中字段的方法:1.启动mongodb;2.登录mongodb数据库;3.新建数据库;4.执行命令删除;具体步骤如下:首先,在命令行中启动mongodb服务;net start MongoDBmongodb服务启动后,...
    99+
    2022-10-24
  • oracle怎么更改表中列的数据类型
    要更改表中列的数据类型,可以使用ALTER TABLE语句。以下是在Oracle中更改表中列数据类型的步骤:1. 首先使用DESCR...
    99+
    2023-08-12
    oracle
  • Sql 中怎么批量查看字符所在的表及字段
    这篇文章给大家介绍Sql 中怎么批量查看字符所在的表及字段,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下: declare @str varchar(100) set...
    99+
    2022-10-18
  • JSON字段类型在ORM中的使用是怎么样的
    JSON字段类型在ORM中的使用是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JSON字段类型在ORM中的使用  ThinkPHP5.1版本正式发布已...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作