创建表并将其填充到 HANA RODBC R 时出现问题

Problems creating and populating tables to HANA RODBC R

我正在尝试使用 R 中的 RODBC 包将数据写入 HANA (SPS 11) 中特定模式中的 table,遇到问题希望有人能提供帮助。

我正在使用 sqlSave 创建文件并写入文件,使用以下命令,但得到奇怪的结果。

res <- sqlSave(ch, dim_product_master_test, tablename = table.for.save, rownames = FALSE, verbose = TRUE)

查询:创建TABLE MYSCHEMA."DIM_PRODUCTSX" ("ProdSrcMonth" varchar(255), "Category" varchar(255), "SubCategory" varchar(255) , "Brand" varchar(255), "Material" INTEGER, "Product" varchar(255), "EAN" varchar(255) ....等)

我收到错误:

sqlColumns(channel, tablename) 错误: 'MYSCHEMA."DIM_PRODUCTSX"': table 在频道

上找不到

但是,正在创建table,那么它似乎无法添加或找到数据。

我尝试了不同的引号方案(包括围绕架构名称)但结果相同。

查询:创建 TABLE "MYSCHEMA"."DIM_PRODUCTSY" ("ProdSrcMonth" varchar(255), "Category" varchar(255), "SubCategory" varchar(255), "Brand" varchar(255), "Material" INTEGER, "Product" varchar(255), "EAN" varchar(255) ... 等

sqlColumns(channel, tablename) 错误: '"MYSCHEMA"."DIM_PRODUCTSY"': table 在频道

上找不到

尝试引用两者,但没有区别。同样,创建 table 但无法更新它。

如果我只是将数据框扔到 sqlSave,它会很高兴地创建 table 并添加数据,但我需要更多的控制。

此外,有人知道如何创建列存储 tables 吗?似乎默认为行存储。

提前致谢。

通常,事先在 SAP HANA 中指定目标 table 是个好主意。这样 COLUMN/ROW 存储设置和每列的特定数据类型都可以按应有的方式设置(例如,即使需要 UNICODE 数据,sqlSave 似乎也不会创建 NVARCHAR 列待保存)。

这是一个对我来说开箱即用的例子(也是 SPS11):

library("RODBC") 
ch<-odbcConnect("SK1", uid="DEVDUDE",pwd="*******")

table.for.save <- 'AIRQUALITY'
aqdata <- airquality
sqlSave(ch,dat = aqdata, tablename = table.for.save, verbose = TRUE, rownames =  FALSE)
odbcClose(ch)

Query: CREATE TABLE "AIRQUALITY" ("Ozone" INTEGER, "SolarR" INTEGER, "Wind" DOUBLE, "Temp" INTEGER, "Month" INTEGER, "Day" INTEGER) Query: INSERT INTO "AIRQUALITY" ( "Ozone", "SolarR", "Wind", "Temp", "Month", "Day" ) VALUES ( ?,?,?,?,?,? )

Binding: 'Ozone' DataType 4, ColSize 10 Binding: 'SolarR' DataType 4, ColSize 10 Binding: 'Wind' DataType 8, ColSize 15 Binding: 'Temp' DataType 4, ColSize 10 Binding: 'Month' DataType 4, ColSize 10 Binding: 'Day' DataType 4, ColSize 10 Parameters: no: 1: Ozone 41//no: 2: SolarR 190//no: 3: Wind 7.4//no: 4: Temp 67//no: 5: Month 5//no: 6: Day 1// ...