1

是否有可能发行在谷歌云扳手像是否可以重新命名列?

RENAME COLUMN col1 col2 

?从DDL看来,这是不可能的;如果不是,这是Beta中的设计选择还是限制?

回答

3

不,这是不可能的。目前,你只能做关于变更表中的列如下:

  • 添加一个新的
  • 删除现有的一个,除非它是一个键列
  • 更改删除行为(级联与否)
  • 转换和BYTESSTRINGBYTES之间STRING
  • 变化长度的
  • 添加或删除NOT NULL修改

一个解决办法是可以通过以下顺序执行下列步骤:

  • 新列添加到您的表
  • 更新您的代码从两列读
  • 更新你的代码只写入新文件
  • 运行Cloud Dataflow作业将数据从旧列迁移到新列
  • 将您的代码更新为仅限于来自新列
  • 删除旧列

记住上面的步骤不会对主键列读取工作,你必须创建一个新表,并做数据迁移做那样。

+0

丹 - 感谢提示。建议如何运行执行迁移的Cloud Dataflow作业?是否有任何内置的功能允许它从Cloud Spanner获取/传输数据? – user3707

+0

除非你已经有一个大的数据集,只要编写任何旧的进程来查询读取和写入单个线程中的所有内容就足以完成工作。 –

相关问题