gpt4 book ai didi

在 bigquery 的 bq 命令行工具中转义查询的引号字符

转载 作者:行者123 更新时间:2023-12-02 19:39:51 25 4
gpt4 key购买 nike

我也尝试使用 bq 命令行自动生成新的每日表格

bq query \
--destination_table=<destination> \
--allow_large_results \
--noflatten_results \
'<query>'

其中给出如下。问题在于sql查询中存在一堆单引号和双引号,并且bq命令行工具也在使用单引号来划分要执行的查询。

所以我知道问题是我必须转义引号,但我不知道该怎么做。我尝试将查询中的单引号替换为“\'”(不带双引号),但这没有帮助,而且似乎是合乎逻辑的做法。我认为有一些明显我没有做的事情,所以希望有人可以帮助我,而不需要做很多工作。

SELECT
time,
userId,
deviceId,
systemName,
LEFT(systemVersion,3) AS systemVersionMajor,
systemVersion AS systemVersionMinor,
deviceModel,
appVersion,
country,
city,
firstRun,
priorTimeSpentInApp,
priorSessions,
priorEvents,
event_name,
event_info,
event_time,
event_value,
MAX(CASE WHEN user_attribute.Name = 'Gen_Total_Sessions' THEN FLOAT(user_attribute.Value) END) AS Gen_Total_Sessions.attr,
MAX(CASE WHEN user_attribute.Name = 'Gen_Last_Achievement' THEN STRING(user_attribute.Value) END) AS Gen_Last_Achievement.attr,
MAX(CASE WHEN event_parameters.Name = 'Gamemode' THEN STRING(event_parameters.Value) END) AS Gamemode.param,
MAX(CASE WHEN event_parameters.Name = 'Player_Level' THEN FLOAT(event_parameters.Value) END) AS Player_Level.param,

FROM
TABLE_QUERY([projectId:dataSet], "table_id CONTAINS 'table1' OR table_id CONTAINS 'table2' OR table_id CONTAINS 'table3'"),
WHERE
event_name = 'Started'
GROUP BY
time,
userId,
deviceId,
systemName,
systemVersionMajor,
systemVersionMinor,
deviceModel,
appVersion,
country,
city,
firstRun,
priorTimeSpentInApp,
priorSessions,
priorEvents,
event_name,
event_info,
event_time,
event_value

*** 添加了更多信息我读过有关使用转义码的内容,并对它有一些了解,但我无法让它工作。这是我尝试在命令行上运行的一个非常简单的示例:

bq query 'SELECT time, userId, event_name, event_time, FROM 
TABLE_QUERY([rhi-localytics-db:LEANPLUM_DATA], \"table_id CONTAINS \'table1\'
OR table_id CONTAINS \'table2\' OR table_id CONTAINS \'table3\' \" ), WHERE
event_name = \'Error\' GROUP BY time, userId, event_time, event_value'

这对我来说看起来不错,但是当我运行它时,bash 会显示“-bash:意外标记 `)' 附近的语法错误”

但我不明白为什么。我将传递给 bq 的外层单引号保留为未转义,并且我已转义了内部的每个单引号。看来 bash 可能不会在不处理转义码本身的情况下传输引号..?

最佳答案

你应该使用转义字符\,如下所示

select 'ab\"c\'123'

阅读 https://cloud.google.com/bigquery/query-reference#stringfunctions 下的“转义字符串中的特殊字符”部分

关于在 bigquery 的 bq 命令行工具中转义查询的引号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com