Is it possible to rename columns?

2019-07-24 14:18发布

问题:

Is it possible to issue something like

RENAME COLUMN col1 col2

in Google Cloud Spanner? It looks from the DDL that this isn't possible; if not, is this a design choice or a limitation whilst in Beta?

回答1:

No, this is not possible. Currently you can only do the following with regard to altering columns in a table:

  • Add a new one
  • Delete an existing one, unless it's a key column
  • Change delete behavior (cascading or not)
  • Convert between STRING and BYTES
  • Change length of STRING and BYTES
  • Add or remove NOT NULL modifier

A work around is possible by following these steps in order:

  • Add the new column to your table
  • Update your code to read to from both columns
  • Update your code to only write to the new one
  • Run a Cloud Dataflow job to migrate the data from the old column to the new column
  • Update your code to only read from the new column
  • Drop the old column

Keep in mind the above steps will not work for the primary key column, you'll have to do by creating a new table, and doing the data migration that way.