我有一个很长的R脚本文件,我想使用SQL Server R服务,阅读它的文档,我还没有看到任何使用的例子:sp_execute_external_script允许加载R脚本文件.所有示例都旨在使用嵌入在SQL语句中的简单r计算,例如以下示例:
DROP PROC IF EXISTS get_iris_dataset;
go
CREATE PROC get_iris_dataset
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
, @script = N'iris_data <- iris;'
, @input_data_1 = N''
, @output_data_1_name = N'iris_data'
WITH RESULT SETS (("Sepal.Length" float not null,
"Sepal.Width" float not null,
"Petal.Length" float not null,
"Petal.Width" float not null, "Species" varchar(100)));
END;
go
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式使用r句source("fileName")来执行r句.
注意:我试图使用SQL Server只是因为比我的个人计算机更好的机器性能.
提前致谢,
大卫
我创建了一个安全策略来在 SQL Server 2016 中实现行级安全性 (RLS)。在一个月中的某个特定时间可以应用安全策略。我打算编写一个启用或禁用安全策略的作业,但我没有得到禁用或启用它的 SQL 命令。
我知道我需要将 check_policy 设置为 OFF
CHECK_POLICY = { OFF }
Run Code Online (Sandbox Code Playgroud)
在视觉上,我可以通过右键单击安全策略使用 Sql Server Management Studio 来完成。
我已将postgresql数据库迁移到SQL Server 2016,其中我的所有文本列都具有TEXT数据类型.我意识到TEXT不应该在SQL Server中使用它.
是否有一个简单的查询来将所有文本列数据类型从SQL Server 更改TEXT为VARCHAR(MAX)?
我找到了这个答案但受列名限制.我想立刻做到这一切.
select
'alter table '||table_schema||'.'||table_name||' alter column'||column_name||' type text;'
from
information_schema.columns
where
table_schema = 'public'
and column_name = 'description'
and data_type = 'text';
Run Code Online (Sandbox Code Playgroud) 我有一个具有系统版本控制的表(临时表),但看不到可视化的设计环境。我这样做是因为我可以看到该SYSTEM_VERSIONING子句已被使用。我想暂时停止然后启用它。谁可以建议我?
我正在使用SSMS 2017,我的数据库是SQL Server 2016 Enterprise.创建数据库图时显示错误:
索引超出了数组的范围
怎么解决?先感谢您
我有一个表 (SROEnquiry),如下面的快照所示:Data.jpg
我正在使用Last_Value()获取表上每个 StudentNumberstudent 的最后一个条目。StudentNumber 'Y1293926' 用作示例。
脚本如下:
SELECT DISTINCT(StudentNumber),
LAST_VALUE(Arrears) OVER
(PARTITION BY StudentNumber ORDER BY RecordID) AS LastValue
FROM SROEnquiry
WHERE StudentNumber = 'Y1293926'
Run Code Online (Sandbox Code Playgroud)
结果如下:
预期的结果是:
StudentNumber LastValue
Y1293926 0.00
Run Code Online (Sandbox Code Playgroud)
它带回 4 个值而不是一个值的脚本有什么问题?
我在 Sql 服务器中有以下 Json 对象。我想将此数据插入多个表及其关系(即外键):
DECLARE @JsonObject NVARCHAR(MAX) = N'{
"FirstElement":{
"Name":"ABC",
"Location":"East US",
"Region":"West US",
"InnerElement":[
{
"Name":"IE1",
"Description":"IE1 Description",
"Type":"Small",
"InnerMostElement":[
{
"Key":"Name",
"Value":"IME1"
},
{
"Key":"AnotherProperty",
"Value":"Value1"
}
]
},
{
"Name":"IE2",
"Description":"IE2 Description",
"Type":"Medium",
"InnerMostElement":[
{
"Key":"Name",
"Value":"IME2"
},
{
"Key":"Address",
"Value":"Xyz"
},
{
"Key":"Type",
"Value":"Simple"
},
{
"Key":"LastProperty",
"Value":"ValueX"
}
]
}
]
}
}'
Run Code Online (Sandbox Code Playgroud)
表结构附在这里:
我要插入FirstElement在数据表1,InnerElement在数据表2和InnerMostElement数据表3。
如何在 SQL Server 2016 中打开 ndJSON 格式?我可以使用 JSON 格式打开,但对如何使用 ndJSON 一无所知。
SQL Server 中是否有特定功能可以执行此操作,还是有其他方法?
Declare @JSON varchar(max)
SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'C:\examplepath\filename.JSON', SINGLE_CLOB) as j
Select * FROM OPENJSON(@JSON)
With (House varchar(50),
Car varchar(4000) '$.Attributes.Car',
Door varchar(4000) '$.Attributes.Door',
Bathroom varchar(4000) '$.Attributes.Bathroom' ,
Basement varchar(4000) '$.Attributes.Basement' ,
Attic varchar(4000) '$.Attributes.Attic'
) as Dataset
Go
Run Code Online (Sandbox Code Playgroud)
JSON 格式:
[
{"House":"Blue","Attributes":{"Car":"Camry","Door":"Small","Bathroom":"Medium","Basement":"Dark","Attic":"1"}},
{"House":"Red","Attributes":{"Car":"Thunderbird","Door":"Large","Bathroom":"Small","Basement":"Light","Attic":"4"}}
]
Run Code Online (Sandbox Code Playgroud)
ndJSON 格式:
{"House":"Blue","Attributes":{"Car":"Camry","Door":"Small","Bathroom":"Medium","Basement":"Dark","Attic":"1"}}
{"House":"Red","Attributes":{"Car":"Thunderbird","Door":"Large","Bathroom":"Small","Basement":"Light","Attic":"4"}}
Run Code Online (Sandbox Code Playgroud) 如何拆分字符串并获取NULL值而不是空字符串.
我有两种方法特别感兴趣STRING_SPLIT和XML.我希望这个查询:
SELECT * FROM STRING_SPLIT('a,b,,d', ',');
Run Code Online (Sandbox Code Playgroud)
将返回第三行NULL而不是空字符串.有没有简单的方法来实现它,即使用特殊字符?我的意思是:
SELECT * FROM STRING_SPLIT('a,b,[null],d', ',') -- this, of course, wouldn't go
Run Code Online (Sandbox Code Playgroud)
我希望我可以使用XML方法从字符串中提取NULL :
CREATE FUNCTION dbo.SplitStrings_XML
(
@List varchar(8000),
@Delimiter char(1)
)
RETURNS TABLE WITH SCHEMABINDING
AS
RETURN (SELECT [value] = y.i.value('(./text())[1]', 'varchar(8000)')
FROM (SELECT x = CONVERT(XML, '<i>'
+ REPLACE(@List, @Delimiter, '</i><i>')
+ '</i>').query('.')
) AS a CROSS APPLY x.nodes('i') AS y(i));
Run Code Online (Sandbox Code Playgroud)
从这里抓取代码:https://sqlperformance.com/2016/03/t-sql-queries/string-split
我在Microsoft SQL Server 2016 DB中有一个数据库表“ table_2”。
CREATE TABLE table_2
(
[created_date] [date] NULL,
[complete_hour] [int] NULL,
[col_percent] [float] NULL,
[notes] [nvarchar] (400)
)
INSERT INTO table_2
VALUES ('2017-05-31', 10, 5.8, 'A'),
('2019-06-14', 11, 9.9, NULL)
Run Code Online (Sandbox Code Playgroud)
现在', B',如果列注释的值为:,我想附加到列注释的值:
如果列注释的值为NULL,我想在列注释中添加/插入/添加'B'。
我尝试过的
UPDATE table_2
SET notes=notes+', '+'B'
WHERE col_percent = 5.8
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
消息8152,级别16,状态13,行14
字符串或二进制数据将被截断。
当我尝试
UPDATE table_2
SET notes=notes+', '+'B'
WHERE col_percent = 9.9
Run Code Online (Sandbox Code Playgroud)
它显示(1 row affected)但我看到相同的数据,并且列注释在第二行中仍为NULL。
我环顾四周,似乎将列注释的数据类型从nvarchar更改为varchar(50)将解决此问题。(我已经测试过)但是在实际情况下,我无法更改数据类型。
问题:如何在不更改列注释的数据类型的情况下执行此操作?
更新:声明注释列为[notes] [nvarchar] (400) …