dbWriteTable:DDL语句之后只有ET或null语句是合法的。)

dbWriteTable:DDL语句之后只有ET或null语句是合法的。),r,teradata,rjdbc,R,Teradata,Rjdbc,我能读数据。但是,在将数据写入Teradata数据库时,出现以下错误: Error in .verify.JDBC.result(s, "Unable to create JDBC prepared statement ", : Unable to create JDBC prepared statement INSERT INTO dl_nbu.alex_test2 VALUES(?,?) ([Teradata Database] [TeraJDBC 1

我能读数据。但是,在将数据写入Teradata数据库时,出现以下错误:

   Error in .verify.JDBC.result(s, "Unable to create JDBC prepared 
   statement ",  : 
   Unable to create JDBC prepared statement INSERT INTO 
   dl_nbu.alex_test2 VALUES(?,?) ([Teradata Database] 
   [TeraJDBC 16.10.00.07] [Error 3932] [SQLState 25000] Only an ET or 
   null statement is legal after a DDL Statement.)
这是我的密码:

     dbWriteTable(tdConnection, "dl_nbu.alex_test2", all_files4)

没有细节很难给出答案。但请查看RJDBC帮助页面:

由于JDBC可以与各种各样的数据库进行通信,因此数据库所理解的SQL方言事先并不知道。因此,RJDBC实现试图遵守SQL92标准,但并非所有数据库都兼容。这主要影响dbWriteTable等必须自动生成SQL代码的函数。一个主要功能是支持引用标识符。SQL92标准使用双引号,但许多数据库引擎要么不支持双引号,要么使用其他字符。这个 identifier.quote参数允许您为所使用的数据库设置正确的引号字符。例如,MySQL需要标识符。quote=“`”。如果设置为NA,将禁用引用标识符的功能,这会对可用于表和字段的名称造成限制。其他功能不受影响

试试这个,看看会发生什么:

allfiles4 -> allFilesFour
dbWriteTable(tdConnection, "testTwo", allFilesFour)
如果有效,则问题在于报价标识符。更改连接到以下位置的线路:

tdConnection <- dbConnect( JDBC( identifier.quote = "`" ), ...

tdConnection发布您的数据样本。另外:您使用什么包连接到SQL?嗨,Carlos。我正在使用RJDBC。我的数据只有两个字符的列。错误消息表明之前有一个未限制的DDL语句<代码>创建表格
<代码>数据库xxx?你能查一下Teradata的QueryLog到底发送了什么吗?有人有什么建议吗?