-
2018-10-09 11:38:35
SqlServer常用的Set选项
SET XACT_ABORT { ON | OFF } --指定当 SQL Server 语句出现运行时错误时, 是否自动回滚当前事务。 SET LOCK_TIMEOUT timeout_period --指定语句等待锁释放的毫秒数。 SET NOCOUNT { ON | OFF } --是否显示语句或存储过程影响的行计数的消息 SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE } --设置事务隔离级别 --READ UNCOMMITTED 未提交读 --READ COMMITTED 已提交读 --REPEATABLE READ 可重复读 --SNAPSHOT 快照 --SERIALIZABLE 可序列化
更多相关内容 -
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
2020-12-15 07:03:33SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。下表列出 SET 与 SELECT 的区别。请特别注意红色部分。 set select 同时对多个变量... -
SQL SERVER使用REPLACE将某一列字段中的某个值替换为其他的值
2020-12-15 04:08:20SQL SERVER将某一列字段中的某个值替换为其他的值 update 表名 set 列名 = REPLACE( 列名 ,... 您可能感兴趣的文章:sqlserver replace函数 批量替换数据库中指定字段内指定字符串参考方法Sql Server中REPLACE函数的使用 -
sqlserver中重复数据值只取一条的sql语句
2020-09-11 01:55:42sqlserver中有时候我们需要获取多条重复数据的一条,需要的朋友可以参考下面的语句 -
SQL Server 打开或关闭自增长
2020-12-15 17:58:10在往数据库表中添加一行的时候,要针对自增列插入一个特定值的时候,这个函数就很有用了,比如表结构如: id | text 1 | a 2 | b 4 | d 其中id列是自曾列,如果我们要插入3 | c的话,如果没有打开... -
SQL Server 提取数字、提取英文、提取中文的sql语句
2021-01-19 22:30:59--SQL 判断字段值是否有中文 create function fun_getCN(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@CN nvarchar(4000) set @CN='' while len(@str)>0 begin set @word=... -
StreamSet操作教学-SqlServer同步到Hive
2020-05-28 16:25:13公司上大数据,要把sqlserver里的业务数据实时同步到大数据平台上。几天调研后选择StreamSet作为ETL工具。技术选型的理由主要有几点: sqlserver的坑太深,网上找了很多工具对sqlserver的支持力度都不是很大(微软...业务背景
公司上大数据,要把sqlserver里的业务数据实时同步到大数据平台上。几天调研后选择StreamSet作为ETL工具。技术选型的理由主要有几点:
- sqlserver的坑太深,网上找了很多工具对sqlserver的支持力度都不是很大(微软全家桶的要哭了~)
- 自己开发ETL程序耗时太长,同时配套的ETL metrics工具也需要配备,劳民伤财。感觉有时间开发不如把精力放在业务数据研究和指标计算上。
- sqlserver支持两种实时同步机制:CDC和Change Tracking,CDC使用起来比较重 果断放弃。
streamset安装
我用的是CDH6.2版本集成化了StreamSet,方便管理。
- streamset下载地址:https://archives.streamsets.com/index.html
- 配置本地yum源
将下载的三剑客文件放在一个新建文件夹中,并移动到/var/www/html 目录中,做离线包的下载地址,用浏览器访问如下,表示成功
- 配置CSD
将STREAMSETS-3.1.4.0.jar拷贝到/opt/cloudera/csd,并更改权限,然后重启cloudera-scm-server服务,没有csd文件夹就自己新建一个。
4.下载分发激活Parcel包
传送门:https://cloud.tencent.com/developer/article/1078852sqlserver之Change Tracking
sqlserver上开启Change Tracking,这里要做到表级别Change Tracking
- 开启库级别Change Tracking
ALTER DATABASE 数据库名 SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
- 开启表级别Change Tracking
ALTER TABLE [dbo].[Department] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
Streamset之sqlserver配置
- 右上角点击All Stages找到SQLxxx
- 配置分析
StreamSet之Hive配置
配置Hive要使用HiveMeData和HiveMeStore两个插件
重要参数详解:- Database Expression:Hive数据库选择,不写则是默认库
- Partition Configuration:设置Hive分区的参数,这里可以设置成多级分区,只要选择“+”就行,其中Partition Value Expression是获取分区号数据的表达式,可以自己生成也可以根据表字段里的数据定义分区。因为我们数据原因,我这里表达式写的很蛋疼~有关表达式的写法建议大家直接去撸下官网(PS:Streamset的官网文档还是很不错的,个人感觉比flink强多了!!)。
官网functions传送门:https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Expression_Language/Functions.html#concept_lhz_pyp_1r
StreamSet之HDFS配置
重要参数详解:
File System URI:hdfs的URI连接
Configuration Files Directory:hdfs的config文件位置,需要加载core-site.xml
Files Prefix:生成hdfs的文件前缀,建议大家改一下,不然生成的文件名巨长~
Files Suffix:生成hdfs的文件后缀,为用了txt格式,记住不用加点
Directory in Header:打钩后会直接落盘到hive的/user/hive/warehouse/中,如果不打钩,则可以自定义落盘路径
Compression Codec :选择压缩算法
Use Roll Attribute :回滚机制
StreamSet之踩坑实战
处理数据同步过程中避免不了加减字段,清洗数据等问题,业务越复杂的OLTP架构中数据迁移越是麻烦,在学习使用StreamSet中,建议大家先去撸清楚官网。我自己在学习使用中总结两个方面感觉很有必要:
- 函数表达式,这里的坑很多,要想使用数据,调用数据都要通过表达式来完成
- Field开头的插件大多是对数据做处理加工的,大家使用前一定要对Field开头的插件挨个看一遍。我自己就使用了Field Type Converter(字段值类型转换)、Expression Evaluator(表达式执行器)
专注大数据生态、Spark/Flink、Java/Scala仔
架构未满、Coding至上、一直在路上 -
sql server字符串非空判断实现方法
2020-09-10 23:28:08在使用sql server过程中会遇到非空判断,本文将详细介绍sql server字符串非空判断实现方法,需要了解的朋友可以参考下 -
sqlserver学习之set与select的区别
2018-05-09 15:15:24转自:http://www.cnblogs.com/micheng11/archive/2008/07/08/1237905.htmlSQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL ...SQL Server推荐使用 SET 而不是...转自:http://www.cnblogs.com/micheng11/archive/2008/07/08/1237905.html
SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。
对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们
并没有注意,其实这两种方式还是有很多差别的。SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。
当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。下表列出 SET 与 SELECT 的区别。请特别注意红色部分。
set select 同时对多个变量同时赋值 不支持 支持 表达式返回多个值时 出错 将返回的最后一个值赋给变量 表达式未返回值 变量被赋null值 变量保持原值 下面以具体示例来说明问题:
create table chinadba1(
表达式返回多个值时,使用 SET 赋值
userid int ,
addr varchar(128)
)
go
insert into chinadba1(userid,addr) values(1,'addr1')
insert into chinadba1(userid,addr) values(2,'addr2')
insert into chinadba1(userid,addr) values(3,'addr3')
go
表达式返回多个值时,使用 SELECT 赋值
declare @addr varchar(128)
set @addr = (select addr from chinadba1)
/*
--出错信息为
服务器: 消息 512,级别 16,状态 1,行 2
子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
*/
godeclare @addr varchar(128)
表达式未返回值时,使用 SET 赋值
select @addr = addr from chinadba1
print @addr --结果集中最后一个 addr 列的值
--结果: addr3
godeclare @addr varchar(128)
表达式未返回值时,使用 SELECT 赋值
set @addr = '初始值'
set @addr = (select addr from chinadba1 where userid = 4 )
print @addr --null值
godeclare @addr varchar(128)
set @addr = '初始值'
select @addr = addr from chinadba1 where userid = 4
print @addr --保持原值
go需要注意的是,SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值。
此时与 使用 SET 赋值是完全相同的
对标量子查询的概念大家应该都觉得陌生,举个例子就能说明declare @addr varchar(128)
set @addr = '初始值'
--select addr from chinadba1 where userid = 4 为标量子查询语句
select @addr = (select addr from chinadba1 where userid = 4)
print @addr --null值go
另外:
用SELECT给变量赋值
使用SELECT的另一种形式也可以获得同样的结果。对变量要在赋值前要先声明。使用SELECT语句来替代SET命令的主要优点是,可以在一个操作内同时给多个变量赋值。执行下面的SELECT语句,通过SELECT语句赋值的变量就可以用于任何操作了。
DECLARE @MyNumber1 int, @MyNumber2 int,
@MyResult1 int, @MyResult2 int
SELECT @MyNumber1 = 144, @MyNumber2 = 121
-- Assign the function result to the variable:
SELECT @MyResult1 = SQRT(@MyNumber1),
@MyResult2 = SQRT(@MyNumber2)
-- Return the variable value
SELECT @MyResult1, @MyResult2 --通过SELECT语句赋值的变量就可以用于任何操作了。
-
sqlserver替换mysql中的find_in_set()函数和mysql中group_contact()函数的方法
2019-09-05 22:07:07(2)sqlserver中的解决方法 SELECT * from cust where (buttonids like '%,4' or buttonids like '4,%' or buttonids like '%,4,%' or buttonids = '4') or (buttonids like '%,5' or buttonids like '5,...在平常的业务逻辑中,当两个对象之间是多对多关系的时候,我们建表一般有两种方法,一种就是建立一个中间表,还有一种就是在一张表中的某一个字段,存另一个对象的id逗号隔开的那种形式。今天我们主要针对第二种方法的一些处理,因为,在mysql中和sqlerver中,针对逗号隔开的形式的处理,两种数据库的处理是不一样的。当然orcal数据库也是不一样的,今天暂时不写orcal数据库的不同。
准备工作:我们需要先建立两张表。用户表和按钮表(图一cust表 图二按钮表)
下面我们通过做题的形式,来进行理解两种数据库对这两个函数的不同
1.查找出含有审核或者发布按钮的用户
(1)mysql中的解决方法
SELECT * from cust where FIND_IN_SET('4',buttonids) or FIND_IN_SET('5',buttonids)
(2)sqlserver中的解决方法
SELECT * from cust where (buttonids like '%,4' or buttonids like '4,%' or buttonids like '%,4,%' or buttonids = '4') or (buttonids like '%,5' or buttonids like '5,%' or buttonids like '%,5,%' or buttonids = '5')
结果:
2.查询出用户列表,同时后面跟一列显示该用户所拥有的 按钮名称也是逗号隔开的那种形式
(1)mysql中的解决方法
SELECT ta.custid, ta.username, GROUP_CONCAT(ta.buttonname) AS buttonnames, GROUP_CONCAT(ta.buttonname,'--',ta.buttonid) AS buttonidandnames FROM ( SELECT c.custid, c.username, c.`password`, c.buttonids, b.buttonid, b.buttonname, FIND_IN_SET(b.buttonid, c.buttonids) nums FROM cust c, t_button b ) ta WHERE ta.nums > 0 GROUP BY ta.custid, ta.username
(2)sqlserver中的解决方法
SELECT c.custid, c.username, stuff ( ( SELECT ',' + CONVERT (VARCHAR, b.buttonname) FROM t_button b WHERE 1 = 1 AND charindex ( ',' + CONVERT (VARCHAR, b.buttonid), ',' + c.buttonids ) > 0 FOR XML path ('') ), 1, 1, '' ) AS buttonnames, stuff ( ( SELECT ',' + CONVERT (VARCHAR, b.buttonname) + '--' + b.buttonid FROM t_button b WHERE 1 = 1 AND charindex ( ',' + CONVERT (VARCHAR, b.buttonid), ',' + c.buttonids ) > 0 FOR XML path ('') ), 1, 1, '' ) AS buttonidandnames FROM cust c
结果:
用到的知识点:
a.find_in_set('a', 列名称)
b.group_contact(列名称),该函数,应用在group by分组之后的数据。
c.sqlserver中的stuff函数。
补充的知识点:
a.find_in_set(列名称,'a,b,c,d') 类似于 列名称 in (a,b,c,d);
b.contact(列名称1,列名称2,列名称3) as names 将其他列的值连起来
参考链接:
https://blog.csdn.net/qq_35374517/article/details/76687049
https://www.cnblogs.com/xiaoxi/p/5889486.html
https://www.cnblogs.com/blazezzz/p/7359575.html?%20?%20?
-
SQL SERVER求每行最大列值
2019-08-11 18:54:41我们一般都是求某一列的最大值,但是偶尔也会有求每一行中的最大值,今天介绍一下,每行最大值的写法 --测试数据 if not object_id(N'T') is null drop table T Go Create table T([id1] int,[id2] int,[id3] int... -
SQL Server 常用 几个设置(set)选项
2016-12-23 11:44:381. SET DEADLOCK_PRIORITY 2. SET LOCK_TIMEOUT 3.@@LOCK_TIMEOUT 4.SET IDENTITY_INSERT 5.SET IMPLICIT_TRANSACTIONS 6.SET NOCOUNT 7.@@ROWCOUNT 8.SET ROWCOUNT 9.SET TRANSACTION ISOL -
14、SQL Server:sql update set from 的用法 (转)
2017-02-20 22:14:04本文来自:http://www.cnblogs.com/zhang9418hn/archive/2012/03/21/2409551.html 下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id, name 1 王 2 李 -
SQL Server UPDATE NULL值遇到的坑
2019-04-26 10:25:02表设计结构( num字段 本应设置为非NULL,默认值为0) ...UPDATE testNUM SET num= num + 11 WHERE id=2 则执行反馈为 但表中字段值仍旧未改变 当然,修改下相关字段设计:非NULL,默认为0 即可 ... -
SQL SERVER 聚合或其他 set 操作消除了 null 值的问题
2019-07-30 17:28:57在最外层转换,数字时转为0,字符时转为空字符’’ MAX(G.FTAMT) --isnull(MAX(G.FTAMT) ,'') SUM(b.AMT1)--isnull(SUM(b.AMT1),0) -
SqlServer根据值查找含有值的数据表及字段
2020-10-02 16:17:59SqlServer根据值查找含有值的数据表及字段 知道数据库中一定存在的一个值,但是数据表太多,不知道是哪张表的时候,可以根据值,查找相关表及字段 declare @cloumns varchar(40) declare @tablename varchar(40) ... -
SQL SERVER 变量赋值
2019-08-04 17:50:54SQL Server中变量赋值的方式有两种,分别是SET和SELECT。 两种赋值方式的区别如下: set select 同时对多个变量赋值 不支持 支持 表达式返回多个值 不支持 将返回的最后一个值赋给变量 ... -
SQLServer基础:TOP、OFFSET-FETCH、SET ROWCOUNT用法笔记
2021-03-31 10:01:29今天给大家介绍一下TOP、OFFSET-FETCH、SET ROWCOUNT用法笔记,希望对大家能有所帮助!1、 TOP用法语法格式:TOP ( expression ) [ PERCEN... -
sqlserver default和null不允许作为显示标志值
2021-03-17 16:03:141 报错 2 解决方法 set identity_insert table_name ON--打开 --插入值 insert into table_name(colu1,colu2,colu3) values(values1,values2,values3) set identity_insert table_name OFF--关闭 -
SQLServer中如何将一个字段的多个记录值合在一行显示
2012-11-24 15:50:36SQLServer中如何将一个字段的多个记录值合在一行显示 -
【SQL SERVER】修改字段部分值
2020-10-28 10:19:49SQL SERVER 修改 字段部分子串 平时修改字段都是使用 UPDATE 表名 SET 字段名 = 字段新值 WHERE 条件 修改整个字段. 今天来了一个新需求,只要修改原字段中的部分子串. 如,修改字段值,将CM70V1420420001修改成CM70V... -
sqlserver 自增列 插入值
2020-08-17 15:45:44sqlserver 批量插入记录时,对有标识列的字段要设置 set IDENTITY_INSERT 表名 on,然后再执行插入记录操作;插入完毕后恢复为 off 设置 格式: set IDENTITY_INSERT 表名 on set IDENTITY_INSERT 表名 off 举例: set ... -
查找sqlserver数据库中,查询某值所表名和字段名
2021-03-07 03:57:36有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的。...CREATE PROCEDURE [dbo].[SP_FindValueInDB](@value VARCHAR(1024))ASBEGIN-- SET NOCOUNT ON added to prevent... -
SQLSERVER ISNULL 函数与判断值是否为空的sql语句
2021-03-07 03:55:34SQLSERVER ISNULL 函数与判断值是否为空的sql语句2019-01-03编程之家收集整理的这篇文章主要介绍了SQLSERVER ISNULL 函数与判断值是否为空的sql语句,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。... -
sqlserver中的表值函数和标量值函数
2017-11-14 17:41:07顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一、表值函数 用户定义表值函数返回 table 数据类型,表是单个 SELECT 语句的结果集。 以下示例: CREATE FUNCTION F3_GetEmployeeSalary ( @EmployeeID... -
sql server 查询数据库所有表中包含该值的表
2020-01-06 16:45:09将 @string 替换成需要查询的值 ...SET @SQL = N'DECLARE @str NVARCHAR(4000); SELECT @str = ISNULL(@str + N'' OR '' + c.name + N'' LIKE N''''%' + @string + ' %'''''', c.name + N'' LIKE N'... -
【SqlServer】------- SqlServer Update 多表更新字段值
2019-05-06 09:50:03set a.ORG_TYPE_ID = b.ID from ORG_DEPARTMENT a inner join PUB_DATA_DICTIONARY b on a.ORG_TYPE_NAME = b.CNAME //翻译 更新 ORG_DEPARTMENT 表 命名为a ,PUB_DATA_DICTIONARY 表 命名为 b; b表的ID 更新到... -
SQL SERVER XML属性值
2019-06-10 18:37:23sql操作xml数据的时候,有时候有要得到其属性值的需求,例子如下: DECLARE @x XML SET @x=' <root> <部位 ID="59" 名称="头颅"> <检查方法 ID="1" 名称="正位" /> <检查方法 ID="2" ... -
SqlServer: 存储过程传表类型参数的三种方式:表值参数/XML/JSON
2021-11-11 09:13:42在使用过程中,传一个表(数据集)的需求是真实存在的,经常有人问。 于是,总结了以前零零散散的知识,汇集为本文,分享... d DATE --SqlServer2005需要改为datetime ) GO SET NOCOUNT ON INSERT INTO t VALUES(1,2