MonetDB不接受来自dbWriteTable的BOOLEAN(csvdump = T)

时间:2014-07-22 18:38:16

标签: r monetdb

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

  

> dbWriteTable(conn,“myTable”,myData,overwrite = F,append = T,csvdump = T)

     

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

     

服务器说未插入第1行字段20的'!value'TRUE',期望类型为boolean'。

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

  

> tmp< - tempfile(fileext =“。csv”)

     

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

     

> TMP

     

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

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

  

COPY 1292将记录从'C:\ Path \记录到\ AppData \ Local \ Temp \ Rtmp80mc5L \ file3e24401f42a.csv''使用DELIMITERS',','\ n','''NULL AS''已锁定; < / p>

然后插入所有数据。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

CREATE TABLE TABLE1(

INFO VARCHAR(5),

SECURE BOOLEAN

);

CREATE TABLE TABLE2(

INFO VARCHAR(5),

SECURE BOOLEAN

);

插入TABLE1(INFO,SECURE)值(&#39; FALSE&#39;,FALSE);

插入TABLE1(INFO,SECURE)值(&#39; TRUE&#39;,TRUE);

  

&GT;库(MonetDB.R)

     

&GT; conn&lt; - dbConnect(MonetDB.R(),&#34; monetdb:// localhost / demo&#34;)

     

&GT; myData&lt; - dbGetQuery(conn,&#34; select * from table1&#34;)

     

&GT; dput(MYDATA的)

     

结构(列表(info = c(&#34; FALSE&#34;,&#34; TRUE&#34;),secure = c(FALSE,TRUE)   )),。Name = c(&#34; info&#34;,&#34; secure&#34;),row.names = c(NA,2L),class =&#34; data.frame&#34; )

     

&GT; dbWriteTable(conn,&#34; table2&#34;,myData,overwrite = F,append = T,csvdump = F)

     

[1] TRUE

     

&GT; dbWriteTable(conn,&#34; table2&#34;,myData,overwrite = F,append = T,csvdump = T)

     

.local(conn,statement,...)出错:     无法执行语句&#39; COPY 2 RECORDS INTO table2 FROM&#39; C:\ Path \ to \ AppData \ Local \ Temp \ Rtmp80mc5L \ file3e241533d14.csv&#39; US ...&#39;

     

服务器说&#39;!价值&#39;错误&#39;从第3行第2字段未插入,期望类型布尔&#39;。