按照here的说明建立连接后,我尝试将一个非常简单的数据框(trythis
,如下所示)写入名为{{1的数据库中的gh_test_20141105
表中。 }}。首先,我试过
p_cia_t
接下来,我在Teradata中创建了一个空表:
> conn <- getTdConnection(vdm='vivaldi')
> dbWriteTable(conn=conn,name=tbl,value=trythis)
Error in .verify.JDBC.result(s, "Unable to execute JDBC prepared statement ", :
Unable to execute JDBC prepared statement INSERT INTO p_cia_t.gh_test_20141005 VALUES(?,?,?,?) ([Teradata Database] [TeraJDBC 14.10.00.17] [Error 3932] [SQLState 25000] Only an ET or null statement is legal after a DDL Statement.)
我接下来的两次尝试编写此数据框的方式都是相互矛盾的:
create table p_cia_t.gh_test_20141105 (eenie integer, meenie integer, minie integer, moe integer);
为什么 > dbWriteTable(conn=conn,name=tbl,value=trythis,append=T)
Error in .local(conn, statement, ...) :
execute JDBC update query failed in dbSendUpdate ([Teradata Database] [TeraJDBC 14.10.00.17] [Error 3803] [SQLState 42S01] Table 'gh_test_20141105' already exists.)
> dbWriteTable(conn=conn,name=tbl,value=trythis,append=T,overwrite=F)
Error in .local(conn, name, value, ...) :
Cannot append to a non-existing table `p_cia_t.gh_test_20141105'
> trythis
eenie meenie minie moe
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12
> conn
An object of class "JDBCConnection"
Slot "jc":
[1] "Java-Object{com.teradata.jdbc.jdk6.JDK6_SQL_Connection@2f242b11}"
Slot "identifier.quote":
[1] NA
> tbl
[1] "p_cia_t.gh_test_20141105"
会反对表已经存在,以及添加append=T
如何将异议更改为“不存在的表?”没有任何意义。
我非常感谢将数据框成功写入Teradata表的任何工作示例,无论是否存在,无论是否附加。
overwrite=F