如何重命名 Databricks 中的列

How to rename a column in Databricks

如何重命名 Databricks 中的列?

以下无效:

ALTER TABLE mySchema.myTable change COLUMN old_name new_name int

它returns错误:

ALTER TABLE CHANGE COLUMN is not supported for changing column 'old_name' with type 'IntegerType >(nullable = true)' to 'new_name' with type 'IntegerType (nullable = true)';

如果有区别的话,这个 table 使用的是 Delta Lake,它没有被这个 "old_name" 列分区或按 z 排序。

您不能在 Databricks 中重命名或更改列数据类型,只能添加新列、对其重新排序或添加列注释。为此,您必须使用 overwriteSchema 选项重写 table。

以下面的这个例子为例 this documentation:

spark.read.table(...)
  .withColumnRenamed("date", "date_created")
  .write
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .table(...)

为了能够重命名列,应该使用 overwriteSchemasaveAsTable

spark.read.table(Table_Name)
  .withColumnRenamed("currentName", "newName")
  .write
  .format("delta")
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .saveAsTable("Table_Name")