Я хотел бы удалить весь свой фрейм данных из R, предпочтительно используя RODBC с оператором sqlSave
(не sqlQuery
). Вот мой пример кода.
library(RODBC)
myconn <- odbcDriverConnect("some connection string")
mydf <- data.frame(col_1 = c(1,2,3), col_2 = c(2,3,4))
sqlSave(myconn, mydf, tablename = '[some_db].[some_schema].[my_table]', append = F, rownames = F, verbose=TRUE)
odbcClose(myconn)
После того, как я его выполняю, я получаю обратно сообщение об ошибке:
Ошибка в sqlColumns (канал, имя таблицы): «my_table»: таблица не найдена на канале
Когда я проверяю SQL Server, присутствует пустая таблица.
Если я снова запускаю тот же код, я получаю сообщение об ошибке:
Ошибка в sqlSave (myconn, mydf, tablename = [some_db]. [some_schema]. [my_table],: 42S01 2714 [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Уже существует объект с именем «my_table» в база данных.[RODBC] ОШИБКА: не удалось SQLExecDirect 'СОЗДАТЬ ТАБЛИЦУ [some_db].[some_schema].[my_table] (col_1 float, col_2 float)'
Любые предложения по устранению неполадок?
ОБНОВЛЕНИЕ
В SSMS я могу успешно выполнить следующие команды:
CREATE TABLE [some_db].[some_schema].[my_table] (
test int
);
drop table [some_db].[some_schema].[my_table]
Вот подробности строки подключения:
Driver=ODBC Driver 17 for SQL Server; Server=someserveraddress; Uid=user_login; Pwd=some_password
[some_db].[some_schema].[some_table]
. Когда я подключаюсь к SQL Server, я не указываю имя базы данных. Я не уверен, что вы имеете в виду, когда я запускаю код напрямую. - person user1700890   schedule 22.02.2021RPostgreSQL
. В конце концов я решил записать таблицу в[some_db]
с помощьюdbWriteTable
, а затем переместить ее в[some_schema]
напрямую с помощью SQL-запроса, потому что больше ничего не работало, и оказалось, что проблема была в драйвере. Следовательно, я бы попытался сначала проверить, работает ли он с использованием чистого SQL. - person tester   schedule 22.02.2021dbWriteTable
это разные пакетыodbc
иDBI
, если я правильно помню, я тоже их попробую. - person user1700890   schedule 22.02.2021DBI
намного быстрее, чемRODBC
. Есть ли конкретная причина, по которой вы бы предпочлиRODBC
DBI
? - person Waldi   schedule 22.02.2021RODBC
обычно проще установить. - person user1700890   schedule 22.02.2021SELECT @@VERSION
в SSMS. - person sgoley   schedule 22.02.2021Microsoft SQL Azure (RTM) - 12.0.2000.8 Oct 1 2020 18:48:35 Copyright (C) 2019 Microsoft Corporation
- person user1700890   schedule 22.02.2021odbcDriverConnect
? - person Waldi   schedule 22.02.2021database=
в строке подключения, чтобы избежать проблем. затем вы можете вызватьsqlSave
без базы данных в скобках. Я не знаю, как указать схему. Возможно сначала попробовать без схемы. - person Waldi   schedule 22.02.2021