批量更改数据库指定字段类型

/*******************************************************************************************************
 * * Decription: 用于修改处理数据表字段类型 *    1) 要求先删除对应字段的默认约束 *       2) 修改字段类型,重新添加默认约束 *    3) 修改配置表的信息为 INPUT 类型
ALTER TABLE PdStandardArtMain DROP CONSTRAINT DF_PdStandardArtMain_Is_TransferAXGOALTER TABLE PdStandardArtMain ALTER COLUMN Is_TransferAX INT GOALTER TABLE PdStandardArtMain ADD CONSTRAINT DF_PdStandardArtMain_Is_TransferAX DEFAULT 0 FOR Is_TransferAX  GO
********** 需要处理的数据库 ********** * 请手动更改 USE 下的几个数据库  
******************************************************************************************************/
USE DB
GO
DECLARE @Table_Name   NVARCHAR(50) = N‘‘DECLARE @Column_Name  NVARCHAR(50) = N‘Is_TransferAX‘DECLARE @Constraint_Name NVARCHAR(100) = N‘‘DECLARE @SQLCMD    NVARCHAR(2000) = N‘‘DECLARE @strCRLF   NVARCHAR(10)   = NCHAR(13) + NCHAR(10)
--查找当前数据库下所有表 Is_TransferAX 字段的类型SELECT ST.[name] AS "Table_Name", SC.[name] AS "Column_Name", SD.definition AS "Default_Value", SD.[name] AS "Constraint_Name"  INTO #tmp_ReTypeColumn FROM sys.tables ST INNER JOIN sys.syscolumns SC ON ST.[object_id] = SC.[id]   INNER JOIN sys.default_constraints SD ON ST.[object_id] = SD.[parent_object_id] AND SC.colid = SD.parent_column_id  WHERE SC.NAME = ‘Is_TransferAX‘   ORDER BY ST.[name], SC.colid 
--用一个本地游标来处理DECLARE cur_ReTypeColumn CURSOR LOCAL FOR SELECT Table_Name, Column_Name, Constraint_Name FROM #tmp_ReTypeColumn
OPEN cur_ReTypeColumn fetch next from cur_ReTypeColumn INTO @Table_Name, @Column_Name, @Constraint_Namewhile @@fetch_Status=0 begin SET @SQLCMD += N‘ ALTER TABLE dbo.‘ + @Table_Name +           N‘ DROP CONSTRAINT ‘ + @Constraint_Name +        N‘ ;‘ + @strCRLF +       N‘ ALTER TABLE dbo.‘ + @Table_Name +        N‘ ALTER COLUMN ‘ + @Column_Name + N‘ INT ‘ +        N‘ ;‘ + @strCRLF +       N‘ ALTER TABLE dbo.‘ + @Table_Name +        N‘ ADD CONSTRAINT DF_‘ + @Table_Name + @Column_Name + N‘ DEFAULT 0 FOR ‘ + @Column_Name + N‘;‘ + @strCRLF +       N‘ ‘ + @strCRLF    fetch next from cur_ReTypeColumn INTO @Table_Name, @Column_Name, @Constraint_Nameend
CLOSE cur_ReTypeColumn DEALLOCATE cur_ReTypeColumn
--开始更新到正式库BEGIN TRANEXEC (@SQLCMD)
--同步配置表的信息为普通类型,不是CheckBox类型UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnBasalProcess‘ AND Field_Name = ‘Is_TransferAX‘UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnProcessList‘ AND Field_Name = ‘Is_TransferAX‘ UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnBasalComp‘ AND Field_Name = ‘Is_TransferAX‘UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnCompList‘ AND Field_Name = ‘Is_TransferAX‘
UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnProductList‘ AND Field_Name = ‘Is_TransferAX‘UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnTypeMapping‘ AND Field_Name = ‘Is_TransferAX‘ UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnContentList‘ AND Field_Name = ‘Is_TransferAX‘UPDATE systemdb..pbTableFieldList SET Type=‘INPUT‘ WHERE Table_Name=‘pbYarnCountList‘ AND Field_Name = ‘Is_TransferAX‘
IF @@ERROR<>0 BEGIN   ROLLBACK   PRINT N‘更新过程中出现错误,请检查....‘  + @strCRLF   PRINT @strCRLF + @SQLCMD + @strCRLF   ENDELSEBEGIN  COMMIT PRINT @strCRLF + N‘处理完成....‘END
DROP TABLE #tmp_ReTypeColumn
RETURN
时间: 2024-10-12 13:02:56

批量更改数据库指定字段类型的相关文章

数据库中字段类型对应的C#中的数据类型

数据库中字段类型对应C#中的数据类型: 数据库                 C#程序 int int32 text string bigint int64 binary System.Byte[] bit Boolean char string datetime System.DateTime decimal System.Decimal float System.Double image System.Byte[] money   System.Decimal nchar String n

数据库中字段类型对应的C#中的数据类型(转载)

数据库中字段类型对应C#中的数据类型: 数据库                 C#程序 int int32 text string bigint int64 binary System.Byte[] bit Boolean char string datetime System.DateTime decimal System.Decimal float System.Double image System.Byte[] money   System.Decimal nchar String n

C#获得数据库指定字段的值

获得数据库指定字段的值,赋给本地变量 如下,获得userinfo数据表里的字段"userid"."orgid", string userid=""; string orgid=""; using (SQLiteConnection con = new SQLiteConnection(Constants.DATA_SOURCE)) { con.Open(); using (SQLiteCommand cmd = new SQL

批量更改数据库表架构(生成sql后直接执行!)

批量更改数据库表架构(生成sql后直接执行!) use my_test; --当前数据库 declare @alltable varchar(1000), @SchemaOld varchar(1000), @SchemaNew varchar(1000), @NewSql VARCHAR(max), @Index INT; SET @SchemaOld='';--原架构名称 SET @SchemaNew='';--新架构名称 SET @NewSql=''; SET @Index=1; SELE

批量更改数据库COLLATION

企业内部有很多系统是繁体的,由于各方面的原因,公司目前正在实行简体化,但各系统中又有数据间的交换,所以系统只能一个一个的更改,以防同时出现过多的问题.由于原先数据库只能存储繁体,而原先已存在的数据则可以不必转换为简体,照用就可以了.我们新的数据库均采用Chinese_PRC_BIN collation, 所以我们直接把旧系统备份一份,然后恢复到新的服务器上,同时更改数据库的collation. 但是只更改了数据库的COLLATION还是不够的.要把数据库里面的表都同时更改了才可以.但我们的数据库

批量替换 MySQL 指定字段中的字符串

MySQL指定字段的特定字符串批量替换的具体语法是: UPDATE 表名 SET 字段名 = replace(字段名, 'http://www.jptcgyy.com', ''); 就是讲 该字段所有的 http://www.jptcgyy.com网址替换为空! 另外,针对ID也可以作个筛选替换,比如我们想把content_type__theme表中ID小于300的field_down_value字段中"86"替换成"80",那么语法就是: UPDATE conte

MongoDB mongoimport 从csv导入数据指定字段类型

mongoimport:指定字段的类型,防止将数字型的字符串导入成数值类型 mongoimport -d idpad_zl -c trs_action_dzwl_zm --type csv --columnsHaveTypes --fields "_id.string(),netbar_wacode.string(),start_time.string(),imsi.string(),imsi_text.string(),imei.string(),device_longitude.string

C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度

一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等于byte, Int16, 等于short, 占2个字节. -32768 32767 Int32, 等于int, 占4个字节. -2147483648 2147483647 Int64, 等于long, 占8个字节. -9223372036854775808 9223372036854775807

mysql批量替换数据库某字段部分内容

update 表名 set 字段名=replace(字段名,’要替换的内容’,’替换后的内容’) eg:修改scenario表中的picture字段中的ip地址. 1 UPDATE scenario 2 SET picture = REPLACE(picture, '10.10.4.43','10.10.4.88'): 查看修改后的结果 1 SELECT * FROM scenario: