dbWriteTable: после оператора DDL допустимыми являются только операторы ET или null.) - PullRequest
0 голосов
/ 26 июня 2018

Я могу читать данные.Однако при записи данных в базу данных 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)

1 Ответ

0 голосов
/ 29 июня 2018

Трудно дать ответ без подробностей.Но посмотрите страницу справки RJDBC:

Из-за того, что JDBC может общаться с широким спектром баз данных, диалект SQL, понимаемый базой данных, заранее не известен.Поэтому реализация RJDBC пытается придерживаться стандарта SQL92, но не все базы данных совместимы.Это влияет в основном на такие функции, как dbWriteTable, которые должны автоматически генерировать код SQL.Одной из основных возможностей является поддержка идентификаторов в кавычках.Стандарт SQL92 использует двойные кавычки, но многие движки баз данных либо не поддерживают его, либо используют другие символы.Параметр identifier.quote позволяет установить правильный символ кавычки для используемой базы данных.Например, MySQL потребует identifier.quote = "` ".Если установлено значение NA, возможность заключать в кавычки идентификаторы отключена, что накладывает ограничения на имена, которые можно использовать для таблиц и полей.Другие функциональные возможности не затрагиваются.

Попробуйте и посмотрите, что произойдет:

allfiles4 -> allFilesFour
dbWriteTable(tdConnection, "testTwo", allFilesFour)

Если работает, то проблема в идентификаторе кавычки.Измените строку, в которой вы устанавливаете соединение, на что-то вроде:

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

Проверьте этот пост: Разные базы данных используют разные имена в кавычках?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...