如何使java预处理语句像查询大查询或如何在大查询中转义参数

时间:2015-02-02 09:57:02

标签: java sql google-app-engine escaping google-bigquery

我在我的项目中使用big-query并根据一些用户输入准备一个查询,这些查询在查询中作为参数。

我们如何以最佳方式做到这一点?

对于java jdbc我们有,所以我们使用prepared-statement。

对于大查询,他们有点像准备陈述

或者您可以提供转义此用户输入的最佳方式,以便在 big-query的sql查询中添加它。

2 个答案:

答案 0 :(得分:1)

BigQuery现在支持参数化查询。您可以使用@param_name等标识符和?的位置参数。

来自docs的Java示例:

String query =
    "SELECT word, word_count\n"
        + "FROM `bigquery-public-data.samples.shakespeare`\n"
        + "WHERE corpus = @corpus\n"
        + "AND word_count >= @min_word_count\n"
        + "ORDER BY word_count DESC";
// Note: Standard SQL is required to use query parameters.
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(query)
        .addNamedParameter("corpus", QueryParameterValue.string(corpus))
        .addNamedParameter("min_word_count", QueryParameterValue.int64(minWordCount))
        .build();

https://cloud.google.com/bigquery/docs/parameterized-queries

答案 1 :(得分:0)

BigQuery不支持预处理语句(或任何类似的语句),因此最有效的解决方案可能是将查询字符串分解为片段并将它们与用户提供的值连接在一起。连接字符串的最快方法似乎只是使用' +'运营商,通过这些旧帖子: