r - SQL 从 R 创建表 - 字符串数据,右截断

标签 r sql-server

我正在使用 Microsoft SQL Azure 版本 12,通过在 RStudio 服务器和 DBI 库上进行操作。我需要从长度为 4000 的变量的数据帧中创建多个 SQL 表。这可以作为

# Create dataframe
df <- data.frame("myid" = stringi::stri_rand_strings(5, 4000),
                 "mydate" = c(Sys.time(), Sys.time()-1, Sys.time()-2, Sys.time()-3, Sys.time()-4) )

# Create SQL table sschema.ttable
DBI::dbWriteTable(conn = connection,
                    name = DBI::Id(schema = "sschema", table = "ttable"),
                    value = df,
                    overwrite = TRUE)
这失败并出现以下错误

Error in result_insert_dataframe(rs@ptr, values, batch_rows) : nanodbc/nanodbc.cpp:1617: 00000: [Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation


我试过
  • 截断变量(次优)
  • 创建表 > 将变量更改为格式 VARCHAR(6000)而不是 VARCHAR(255) > 附加数据框。这会导致相同的“字符串数据,右截断”错误。

  • 任何解决方案如何直接从 R 数据帧创建 SQL 表?

    最佳答案

    答案是使用 field.types 定义变量及其所需的 SQL 变量类。如

    # Create SQL table sschema.ttable
    DBI::dbWriteTable(conn = connection,
                        name = DBI::Id(schema = "sschema", table = "ttable"),
                        field.types=c(myid="varchar(6000)"),
                        value = df,
                        overwrite = TRUE)
    

    关于r - SQL 从 R 创建表 - 字符串数据,右截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63694372/

    相关文章:

    json - 从 R 中的加载对象创建 json 字符串

    sql-server - SQL 服务器立即返回结果

    java - 使用代码查找距离范围内的点(在数据库中存储一组纬度/经度)

    r - 使用 R 的 Motion 的简单正交结构——确定度量约束

    r - ggplotly 因带有 xintercept 日期值的 geom_vline() 而失败

    r - 相同地考虑往返

    sql - 从 .bak 文件恢复时动态获取数据库逻辑名称

    SQL Server 2008 : Check constraints that guarantees that only one value in all rows is set to 1 and others are 0

    sql - 无法使用实例名称连接到 SQL Server

    R:data.table 计数 !NA 每行