将正则表达式应用于 SQL R 中的数据库
Applying regular expressions to SQL databases in R
tbl(db_name, "table_name")
tbl(db_name, "table_name") %>% show_query()
#> <SQL>
#> SELECT *
#> FROM "table_name"
我可以在数据库上使用 dplyr tbl()
函数,并且 table 没有问题。当我调用 show_query()
函数时,我可以看到 tbl()
正在后台执行一个简单的 SQL 查询。如上所示。
下面显示的是我在尝试应用正则表达式并使用 dplyr 和 R(也可能是 dbplyr?)改变列时遇到的错误。仅供参考,这是在 Teradata 数据仓库中执行的。
tbl(db_name, "table_name") %>%
mutate(col1 = gsub("^0+(?!$)", "", col1))
#> Error in new_result(connection@ptr, statement) :
#> nanodbc/nanodbc.cpp:1000: 22800: [Teradata][ODBC Teradata Driver]
#> [Teradata Database](-8607)Syntax error: expected something between '(' and
#> the string '^0+(?!$)'.
如果我 show_query()
你可以看到 gsub()
是如何应用的,我猜这是 SQL.
的不正确语法
tbl(db_name, "table_name") %>%
mutate(col1 = gsub("^0+(?!$)", "", col1)) %>%
show_query()
#> <SQL>
#> SELECT "Plant_Material_Id",
#> "Plant_Id_In_Source",
#> gsub('^0+(?!$)', '', "col1") AS "col1",
#> "col2",
#> "col3"
#>
#> FROM "table_name"
如何在 SQL 数据库(在本例中为 Teradata)上使用 R 中的正则表达式改变列?
我还应该提到我想在不使用 collect()
函数的情况下执行此操作,因为我希望在服务器端完成所有操作。我正在使用(相对)大型数据库并将所有内容加载到内存中并不实用。
您可以尝试使用 SQL 函数 REGEXP_REPLACE()
而不是 r 函数 gsub()
tbl(db_name, "table_name") %>%
mutate(col1 = REGEXP_REPLACE(col1, "^0+(?!$)", "" ))
对于 PostgreSQL 数据库只需'REPLACE`
tbl(db_name, "table_name")
tbl(db_name, "table_name") %>% show_query()
#> <SQL>
#> SELECT *
#> FROM "table_name"
我可以在数据库上使用 dplyr tbl()
函数,并且 table 没有问题。当我调用 show_query()
函数时,我可以看到 tbl()
正在后台执行一个简单的 SQL 查询。如上所示。
下面显示的是我在尝试应用正则表达式并使用 dplyr 和 R(也可能是 dbplyr?)改变列时遇到的错误。仅供参考,这是在 Teradata 数据仓库中执行的。
tbl(db_name, "table_name") %>%
mutate(col1 = gsub("^0+(?!$)", "", col1))
#> Error in new_result(connection@ptr, statement) :
#> nanodbc/nanodbc.cpp:1000: 22800: [Teradata][ODBC Teradata Driver]
#> [Teradata Database](-8607)Syntax error: expected something between '(' and
#> the string '^0+(?!$)'.
如果我 show_query()
你可以看到 gsub()
是如何应用的,我猜这是 SQL.
tbl(db_name, "table_name") %>%
mutate(col1 = gsub("^0+(?!$)", "", col1)) %>%
show_query()
#> <SQL>
#> SELECT "Plant_Material_Id",
#> "Plant_Id_In_Source",
#> gsub('^0+(?!$)', '', "col1") AS "col1",
#> "col2",
#> "col3"
#>
#> FROM "table_name"
如何在 SQL 数据库(在本例中为 Teradata)上使用 R 中的正则表达式改变列?
我还应该提到我想在不使用 collect()
函数的情况下执行此操作,因为我希望在服务器端完成所有操作。我正在使用(相对)大型数据库并将所有内容加载到内存中并不实用。
您可以尝试使用 SQL 函数 REGEXP_REPLACE()
而不是 r 函数 gsub()
tbl(db_name, "table_name") %>%
mutate(col1 = REGEXP_REPLACE(col1, "^0+(?!$)", "" ))
对于 PostgreSQL 数据库只需'REPLACE`