标签归档:sql

MySQL 语句级避免重复插入—— Insert Select Not Exist

想要插入一条数据,要避免重复插入,又不想折腾两回数据库连接操作,可以参考如下办法。 INSERT INTO table(column1,column2,column3 …columnN) SELECT value1,value2,value3 …valueN FROM dual WHERE NOT EXISTS( SELECT * FROM table WHERE value = ? ); dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT … SELECT构建成我们需要的表,并指定了数据项. EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作

发表在 学习笔记 | 标签为 , | 留下评论

TXT文件导入sql数据库时分隔符控制

小结: Txt文本文件分隔符format有多种。例如:逗号,分号,制表符等 详细参考 :http://msdn.microsoft.com/en-us/library/ms709353%28VS.85%29.aspx 直接用jet引擎导入,例如: SELECT * INTO jiaofei FROM OPENROWSET(‘MICROSOFT.JET.OLEDB.4.0’, ‘Text;HDR=YES;FMT=TabDelimited;DATABASE=F:\’ , jiaofei#txt) –aa#txt是文本文件名aa.txt 其中:“text;HDR=Yes;FMT=TabDelimited”; hdr=yes 意思是首行是否包含列名称 FMT=TablDelimited 意思是格式的分割限定 实际导入时,发现源文件是使用”制表符“分隔的,但导入后没有分隔。 经查资料,发现如下两种解决方案: 方案一:修改注册表。 修改注册表中:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text “format”的键值 默认的分隔符为CSV分隔“,”文件是制表符分隔的,那么就要把”format”的键值改成“Tabdelimited” 方案二:增加Schema.ini来订制格式 数据类型, … 继续阅读

发表在 日记 | 标签为 , | 2条评论

SqlBulkCopy使用

SQLBulkCopy用于批量复制数据。性能优势明显。 使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader实例读取数据(如:SqlDataReader)。 示例: //sqlbulkCopy 批量插入数据库 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn)) { //一次批量的插入的数据量 sqlBC.BatchSize = 10000; //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除 sqlBC.BulkCopyTimeout = 60; //设置要批量写入的表 sqlBC.DestinationTableName = “dbo.tbl_test”; //自定义的datatable和数据库的字段进行对应 sqlBC.ColumnMappings.Add(“A”, “col_A”); sqlBC.ColumnMappings.Add(“B”, “col_B”); … 继续阅读

发表在 学习笔记 | 标签为 , | 一条评论

SQLserver字符串分割函数

来源互联网: 一、按指定符号分割字符串,返回分割后的元素个数 CREATE FUNCTION [dbo].[Get_StrArrayLength] ( @str VARCHAR(1024) , –要分割的字符串 @split VARCHAR(10) –分隔符号 ) RETURNS INT AS BEGIN DECLARE @location INT DECLARE @start INT DECLARE @length INT SET @str = LTRIM(RTRIM(@str)) SET @location = CHARINDEX(@split, @str) SET @length = 1 … 继续阅读

发表在 学习笔记 | 标签为 , , | 3条评论

Sql Server2000/2005 查询所有表的大小和空间使用信息

sql Server2000: SELECT OBJECT_NAME(id) tablename , 8 * reserved / 1024 reserved , RTRIM(8 * dpages / 1024) + ‘Mb’ used , 8 * ( reserved – dpages ) / 1024 unused , 8 * dpages / 1024 – rows … 继续阅读

发表在 日记 | 标签为 , , , | 留下评论