gpt4 book ai didi

mysql - 一次修改多个数据库列的格式

转载 作者:行者123 更新时间:2023-11-29 20:52:19 25 4
gpt4 key购买 nike

我已使用 phpmyadmin 将 csv 表导入到 sql 数据库中。我猜默认格式是十进制(8,5),或者至少是这样的。似乎有点过分了,我想我可以减少到 4,1。问题是大约有 470 个字段。我知道如何一次更改一个,但这需要很长时间。有没有更快的方法?

最佳答案

我只有Sql Server 2008 R2,但似乎MySQL解决方案可能类似。我试图尽可能地将它与 MySQL 保持一致,但是如果没有 MySQL 引擎,我无法检查它......因此,对于它的值(value),这是我的脚本(在 Sql Server 中测试):

-- I believe this is 'CREATE TEMPORARY TABLE' in MySql
create table #tbl
(
ownerName sysname -- `sysname` is nvarchar(128) the max identifier length
, tableName sysname
, colName sysname
, colType sysname
, colPrecision int
, colScale int
)
insert #tbl
select table_schema, table_name, column_name, data_type, numeric_precision, numeric_scale
FROM information_schema.columns
where data_type = 'decimal' and numeric_precision = 8 and numeric_scale = 5

-- Note: It is 'MODIFY COLUMN' in MySQL
declare @newPrecision int = 4, @newScale int = 1
DECLARE @sql varchar(max) = ''
select @sql = @sql + CHAR(13) + CHAR(10) + 'ALTER TABLE ' + ownerName + '.' + tableName + ' ALTER COLUMN '
+ colName + ' decimal(' + cast(@newPrecision as varchar(max)) + ',' + cast(@newScale as varchar(max)) + ')'
from #tbl
/**
-- In MySql, GROUP_CONCAT() may work
select @sql = GROUP_CONCAT( 'ALTER TABLE ' + ownerName + '.' + tableName + ' MODIFY COLUMN '
+ colName + ' decimal(' + cast(@newPrecision as varchar(max)) + ',' + cast(@newScale as varchar(max)) + ')' SEPARATOR ' ' )
from #tbl
**/

print @sql
execute ( @sql )

关于mysql - 一次修改多个数据库列的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com