Невозможно привести строку к дате при вставке в Databricks SQL
У меня есть таблица, созданная так:
CREATE TABLE IF NOT EXISTS MyDataBase.Table (
`date` DATE,
`name` STRING,
`isTarget` BOOLEAN
) USING DELTA LOCATION '/mnt/path/to/folder/'
Мне нужно вручную вставить значения в таблицу с помощью SQL. Я пытался сделать это так:
INSERT INTO CalendrierBancaire.Data VALUES (
('2022-01-01', 'New Year', True)
)
Но он не работает с этой ошибкой:
Error in SQL statement: AnalysisException: cannot resolve 'CAST(`col1` AS DATE)' due to data type mismatch: cannot cast struct<col1:string,col2:string,col3:boolean> to date; line 1 pos 0;
Я также попытался заменить строку даты на:
-
CAST('2022-01-01' AS DATE)
-
to_date('2022-01-01', 'yyyy-MM-dd')
Но ни один из них не работал и возвращал ту же ошибку. Похоже, что синтаксический анализатор SQL хочет преобразовать всю строку в дату, что глупо. У вас есть идеи, как я могу это сделать?
Спасибо.
PS: В реальном использовании мне нужно вставить от 30 до 40 строк, поэтому переменная с выражением CAST может быть болезненной для всех значений.
1 ответ
Похоже, проблема в том, что у вас есть дополнительные скобки вокруг значений, которые вы хотите вставить, поэтому они интерпретируются как один столбец - вам нужно использовать следующий синтаксис (см. документы ):
INSERT INTO CalendrierBancaire.Data VALUES
('2022-01-01', 'New Year', True)
или если у вас есть несколько строк для вставки, укажите их через запятую:
INSERT INTO CalendrierBancaire.Data VALUES
('2022-01-01', 'New Year', True),
('2022-02-01', 'New Year 2', True)
PS Хотя у меня работает нормально даже с дополнительными скобками