批量修改字段
using System.Data.SqlClient;
var reader = ExecuteQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");
while(reader.Read())
{
var tableName = reader[0].ToString();
var tableDetailCmd = $@"SELECT
A.name AS table_name,
B.name AS column_name,
C.value AS column_description
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = '{tableName}'SELECT
A.name AS table_name,
B.name AS column_name,
C.value AS column_description
FROM sys.tables A
INNER JOIN sys.columns B ON B.object_id = A.object_id
LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = '{tableName}'";
// 查询表结构详细信息
var tableDetailInformation = ExecuteQuery(tableDetailCmd);
while(tableDetailInformation.Read())
{
var columnName = tableDetailInformation["column_name"].ToString();
if(!columnName?.Contains("Time") ?? true)continue;
var modFdCmd = $@"update {tableName} set {columnName}='1999-01-01';
alter table {tableName} alter column {columnName} datetime null";
// 更新所有字段名带有Time字眼的类型
ExecuteNonQuery(modFdCmd);
}
}
bool ExecuteNonQuery(string cmd)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "Data Source=...;Database=SuperTeamDelivery;User ID=sa;Password=admin..;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = cmd;
var result = command.ExecuteNonQuery();
connection.Close();
return result > 0;
}
SqlDataReader ExecuteQuery(string cmd)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "Data Source=...;Database=SuperTeamDelivery;User ID=sa;Password=admin..;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = cmd;
return command.ExecuteReader();
}
网友评论