可以重命名列?

问题描述 投票:0回答:2

有可能发出类似的东西

RENAME COLUMN col1 col2

在Google Cloud Spanner中? 从DDL看,这是不可能的。如果没有,这是设计选择还是限制?

database google-cloud-platform database-schema google-cloud-spanner
2个回答
6
投票
,这是不可能的。当前,您只能在表中更改列进行以下操作:

    添加一个新的
  • 删除现有的,除非它是键列
  • 变更删除行为(是否级联)
  • STRING
    BYTES
    之间
    
  • 改变长度
  • STRING
    BYTES
    
    
  • add或删除
  • NOT NULL
    修饰符
  • 通过按照以下步骤遵循以下步骤,可以解决一个问题:

将新列添加到您的桌子
  • 提述您的代码以从两个列中读取到
  • 将您的代码添加到新One
  • 运行云数据流工作,将数据从旧列迁移到新列
  • 将您的代码置于新列
  • 仅读取您的代码
  • 抛开旧列
  • 保留上述步骤对主密钥列不起作用,您必须通过创建一个新表,并以这种方式进行数据迁移。

如果您的数据集不太大,例如一百万张记录,则可以创建一个新的列


0
投票

将数据从旧列复制到Spanner Studio中的新列中,分别为40000(Spanner Studio限制了查询中的突变数):

UPDATE my_table SET new_column = old_column
WHERE id_column IN (
    SELECT id_column FROM (
        SELECT id_column FROM my_table 
        WHERE new_column is NULL
        ORDER BY id_column ASC  
        LIMIT 40000
    ) tmp
)

然后放下旧列:


ALTER TABLE my_table DROP COLUMN old_column

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.