首页 > 解决方案 > SQL从R创建表 - 字符串数据,右截断

问题描述

我正在使用 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)

这失败并出现以下错误

result_insert_dataframe(rs@ptr, values, batch_rows) 中的错误: nanodbc/nanodbc.cpp:1617: 00000: [Microsoft][ODBC Driver 17 for SQL Server]String 数据,右截断

我试过了

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

标签: rsql-server

解决方案


field.types答案是使用as定义变量及其所需的 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)

推荐阅读