1

将布尔数据附加到现有表时,我得到以下信息。

> dbWriteTable(conn,“myTable”,myData,覆盖 = F,追加 = T,csvdump = T)

.local(conn, statement, ...) 中的错误:无法执行语句'COPY 1292 RECORDS INTO myTable FROM'C:\Path\to\AppData\Local\Temp\Rtmp80mc5L\file3e24401f42a.cs...'。

服务器说 '!value 'TRUE' from line 1 field 20 not inserted, Expecting type boolean'。

我采用了一些处理此问题的连接器代码:

> tmp <- tempfile(fileext = ".csv")

> write.table(myData, tmp, sep = ",", quote = TRUE,row.names = FALSE, col.names = FALSE,na="")

> 温度

[1] "C:\Path\to\AppData\Local\Temp\Rtmp80mc5L\file3e24401f42a.csv"

将 TRUE 更改为 1 并将 FALSE 更改为 0 并运行以下 SQL 代码时:

将 1292 条记录复制到 myTable 从 'C:\Path\to\AppData\Local\Temp\Rtmp80mc5L\file3e24401f42a.csv' 使用分隔符 ',','\n','"' NULL AS '' LOCKED;

然后插入所有数据。

4

2 回答 2

0

创建表 TABLE1 (

信息 VARCHAR(5),

安全布尔值

);

创建表 TABLE2 (

信息 VARCHAR(5),

安全布尔值

);

插入 TABLE1 (INFO, SECURE) 值 ('FALSE',FALSE);

插入 TABLE1 (INFO, SECURE) 值 ('TRUE',TRUE);

> 图书馆(MonetDB.R)

> conn <- dbConnect(MonetDB.R(), "monetdb://localhost/demo")

> myData <- dbGetQuery(conn,"select * from table1")

> 输入(我的数据)

结构(列表(信息 = c(“假”,“真”),安全 = c(假,真)),.Names = c(“信息”,“安全”),row.names = c(NA,2L ), class = "data.frame")

> dbWriteTable(conn,“table2”,myData,覆盖 = F,追加 = T,csvdump = F)

[1] 对

> dbWriteTable(conn,“table2”,myData,覆盖 = F,追加 = T,csvdump = T)

.local(conn, statement, ...) 中的错误:无法执行语句 'COPY 2 RECORDS INTO table2 FROM 'C:\Path\to\AppData\Local\Temp\Rtmp80mc5L\file3e241533d14.csv' US...' .

服务器说'!value'FALSE'从第 3 行字段 2 未插入,期待类型 boolean'。

于 2014-07-23T14:09:28.097 回答
0

似乎需要转换布尔列。同时,它是否适用于 csvdump=F?

于 2014-07-23T08:42:02.003 回答