我们将数据库导入到BigQuery中,但是许多列没有正确的数据类型,其中许多列都是以字符串形式存储的。我想通过更改BigQuery中的数据类型来修复它们
ALTER TABLE my.data_set.my_table ALTER COLUMN create_date SET DATA TYPE DATE;但我有
ALTER TABLE ALTER COLUMN SET DATA TYPE requires that the existing column type (STRING) is assignable to the new type (DATE)如何解决这个问题?
发布于 2022-05-16 15:23:59
不幸的是,据我所知,没有办法使用STRING将数据类型转换为DATE,而是使用所需的模式再次创建数据类型。
CREATE OR REPLACE TABLE testset.tbl AS
SELECT 'a' AS col1, '2022-05-16' AS create_date
UNION ALL
SELECT 'a' AS col1, '2022-05-14' AS create_date
;
-- ALTER TABLE testset.tbl ALTER COLUMN create_date SET DATA TYPE DATE;
-- Query error: ALTER TABLE ALTER COLUMN SET DATA TYPE requires that
-- the existing column type (STRING) is assignable to the new type (DATE) at [7:25]
-- Create it again.
CREATE OR REPLACE TABLE testset.tbl AS
SELECT * REPLACE(SAFE_CAST(create_date AS DATE) AS create_date)
FROM testset.tbl;发布于 2022-09-23 09:23:02
按照以下步骤执行:
将表mydataset.mytable将列create_date重命名为create_date_to_drop;
更改表mydataset.mytable,添加列create_date日期;
更改表mydataset.mytable删除列create_date_to_drop; 注意:到目前为止,DROP列将无法处理受客户管理的加密密钥保护的表。
或者,您可以删除beta版本中的现有列,并将其添加到新的数据类型中,但您需要等到时间旅行窗口(默认情况下为7天)才能添加同名的列。
https://stackoverflow.com/questions/72260516
复制相似问题