如何重命名 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(...)
为了能够重命名列,应该使用 overwriteSchema 和 saveAsTable:
spark.read.table(Table_Name)
.withColumnRenamed("currentName", "newName")
.write
.format("delta")
.mode("overwrite")
.option("overwriteSchema", "true")
.saveAsTable("Table_Name")
如何重命名 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(...)
为了能够重命名列,应该使用 overwriteSchema 和 saveAsTable:
spark.read.table(Table_Name)
.withColumnRenamed("currentName", "newName")
.write
.format("delta")
.mode("overwrite")
.option("overwriteSchema", "true")
.saveAsTable("Table_Name")