serializationに組み込まれたRを使用すると、SQL Server 2016でこれを実行できます。ただし、これは間違いなく機能します。
例、セットアップ二つの別々の入力一時テーブル(they cannot be table variables, unfortunately):あなたは
DECLARE
@Table1_Input NVARCHAR(MAX) = 'SELECT * FROM #Table1;',
@Table2_Input NVARCHAR(MAX) = 'SELECT * FROM #Table2;',
@Table1_Data VARBINARY(MAX),
@Table2_Data VARBINARY(MAX);
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
if(nrow(InputDataSet) == 0)
stop("Invalid data passed in")
# Read in the sql table, serialize it to an output string
Output <- serialize(InputDataSet, NULL)
',
@input_data_1 = @Table1_Input,
@params = N'@Output VARBINARY(MAX) OUTPUT',
@Output = @Table1_Data OUTPUT;
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
if(nrow(InputDataSet) == 0)
stop("Invalid data passed in")
# Read in the sql table, serialize it to an output string
Output <- serialize(InputDataSet, NULL)
',
@input_data_1 = @Table2_Input,
@params = N'@Output VARBINARY(MAX) OUTPUT',
@Output = @Table2_Data OUTPUT;
最後にR.に翻訳されたシリアル化された結果を保持するためにVARBINARYタイプを作成することができますここから
CREATE TABLE #Table1
(
[StrCol] NVARCHAR(50),
[IntCol] INT
);
INSERT INTO
#Table1
(
[StrCol],
[IntCol]
)
VALUES
(N'testing data 1', 1),
(N'testing data 2', 2)
;
CREATE TABLE #Table2
(
[StrCol] NVARCHAR(50),
[IntCol] INT
);
INSERT INTO
#Table2
(
[StrCol],
[IntCol]
)
VALUES
(N'more testing data 1', 5),
(N'more testing data 2', 6)
;
、
EXECUTE sp_execute_external_script
@language = N'R',
@script = N'
table1 <- unserialize(Table1_Data)
table2 <- unserialize(Table2_Data)
OutputDataSet <- rbind(table1, table2)
',
@params = N'@Table1_Data VARBINARY(MAX), @Table2_Data VARBINARY(MAX)',
@Table1_Data = @Table1_Data,
@Table2_Data = @Table2_Data
WITH RESULT SETS (([Col1] NVARCHAR(50), [Col2] INT));
結果:
Col1 Col2
testing data 1
testing data 2
more testing data 5
more testing data 6
Windowsを使用していると仮定すると、RODBCを使用して入力を簡単に行うことができます。 –
これはどういう意味ですか? (例、Windowsを使用しています)EXEC sp_execute_external_script @language = N'R ' 、@ script = N' library(RODBC) ch < - odbcConnect( "dsn"、uid = "sa"、pwd = "pass @input1 < - sqlFetch(ch、 "table1") input2 < - sqlFetch(ch、 "table2") ' –
フォーマットがうんざりです。私はStackOverflowの新機能ですが、まだ質問をしてコメントを追加する方法を学んでいます –