.NET Core 上的 BigQuery - 插入时出错
BigQuery on .NET Core - Error on insertion
我正在使用 .NET Core 3.1 开发 Google Cloud Function,我还在 C# 上使用 BigQuery 库。
当我尝试像这样插入时:
BigQueryResults newResult = client.ExecuteQuery(
@$"INSERT {table}
(deal_id,
deal_name,
deal_amount,
deal_deal_stage_name,
deal_cf_tipos_de_operao,
deal_cf_vidas,
deal_cf_faturamento_estimativa,
deal_cf_vigncia_mmaaaa,
deal_cf_agenciamento,
deal_cf_comisso_mensal,
deal_cf_valor_por_vida,
deal_cf_produto,
deal_cf_benefcios,
deal_closed_date,
created_at,
updated_at)
VALUES(
{newRequest.deal_id},
'{newRequest.deal_name}',
{Convert.ToInt32(newRequest.deal_amount)},
'{newRequest.deal_deal_stage_name}',
'{newRequest.deal_cf_tipos_de_operao}',
{newRequest.deal_cf_vidas},
{newRequest.deal_cf_faturamento_estimativa},
'{newRequest.deal_cf_vigncia_mmaaaa}',
{newRequest.deal_cf_agenciamento},
{newRequest.deal_cf_comisso_mensal},
{newRequest.deal_cf_valor_por_vida},
'{newRequest.deal_cf_produto}',
'{newRequest.deal_cf_benefcios}',
'{newRequest.deal_closed_date}',
'{newRequest.created_at}',
'{newRequest.updated_at}')",
null)
.ThrowOnAnyError();
但我收到以下错误:
The service bigquery has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37] [400]
Errors [
Message[Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37]]
Location[q - parameter] Reason[invalidQuery] Domain[global]
]
我不明白的是,我用来存储日期值的变量已经是 DateTime,例如 newRequest.deal_closed_date
。可能格式不对?
我该怎么做才能解决这个问题?
谢谢!
发生错误是因为您将字符串中的数据插入到 BigQuery 中具有 DATETIME data type 的列。
先将您的数据从 String 转换为 DateTime 数据类型,然后再插入 BigQuery。您可以使用 DateTime.Parse()
方法执行此操作:
DateTime dateTime = DateTime.Parse(dateTimeString);
我正在使用 .NET Core 3.1 开发 Google Cloud Function,我还在 C# 上使用 BigQuery 库。
当我尝试像这样插入时:
BigQueryResults newResult = client.ExecuteQuery(
@$"INSERT {table}
(deal_id,
deal_name,
deal_amount,
deal_deal_stage_name,
deal_cf_tipos_de_operao,
deal_cf_vidas,
deal_cf_faturamento_estimativa,
deal_cf_vigncia_mmaaaa,
deal_cf_agenciamento,
deal_cf_comisso_mensal,
deal_cf_valor_por_vida,
deal_cf_produto,
deal_cf_benefcios,
deal_closed_date,
created_at,
updated_at)
VALUES(
{newRequest.deal_id},
'{newRequest.deal_name}',
{Convert.ToInt32(newRequest.deal_amount)},
'{newRequest.deal_deal_stage_name}',
'{newRequest.deal_cf_tipos_de_operao}',
{newRequest.deal_cf_vidas},
{newRequest.deal_cf_faturamento_estimativa},
'{newRequest.deal_cf_vigncia_mmaaaa}',
{newRequest.deal_cf_agenciamento},
{newRequest.deal_cf_comisso_mensal},
{newRequest.deal_cf_valor_por_vida},
'{newRequest.deal_cf_produto}',
'{newRequest.deal_cf_benefcios}',
'{newRequest.deal_closed_date}',
'{newRequest.created_at}',
'{newRequest.updated_at}')",
null)
.ThrowOnAnyError();
但我收到以下错误:
The service bigquery has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37] [400]
Errors [
Message[Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37]]
Location[q - parameter] Reason[invalidQuery] Domain[global]
]
我不明白的是,我用来存储日期值的变量已经是 DateTime,例如 newRequest.deal_closed_date
。可能格式不对?
我该怎么做才能解决这个问题?
谢谢!
发生错误是因为您将字符串中的数据插入到 BigQuery 中具有 DATETIME data type 的列。
先将您的数据从 String 转换为 DateTime 数据类型,然后再插入 BigQuery。您可以使用 DateTime.Parse()
方法执行此操作:
DateTime dateTime = DateTime.Parse(dateTimeString);