Tag: sql

用PostgreSQL快速find类似的string

我需要在表格中创build类似string的排名。 我有下面的表格 create table names ( name character varying(255) ); 目前,我使用pg_trgm模块,它提供了similarityfunction,但是我有一个效率问题。 我创build了一个像Postgres手册所示的索引: CREATE INDEX trgm_idx ON names USING gist (name gist_trgm_ops); 并执行以下查询: select (similarity(n1.name, n2.name)) as sim, n1.name, n2.name from names n1, names n2 where n1.name != n2.name and similarity(n1.name, n2.name) > .8 order by sim desc; 查询起作用了,但是当你有数百个名字的时候真的很慢。 此外,也许我忘了一些SQL,但我不明白为什么我不能使用条件and sim > .8没有得到“列SIM卡不存在”的错误。 我想任何提示使查询更快。

在sql-server中实现审计跟踪的最佳方法是什么?

我不知道这些要求是否标准,但我不知道是否有解决scheme可以做到以下几点: 对于一组指定的表,在相关表的审计版本中更改logging之前保留一份logging的副本。 我宁愿不必为每个表编码。 我想知道是否有一个解决scheme,你可以安装在MS-SQL的顶部,这将为你做这个?

SQL服务器在whereexpression式中忽略大小写

如何构造一个SQL查询(MS SQL Server)where where子句不区分大小写? SELECT * FROM myTable WHERE myField = 'sOmeVal' 我想要结果回来忽略案件

如何比较两个date在SQL Server 2005中查找时间差,date操作

我有两列: job_start job_end 2011-11-02 12:20:37.247 2011-11-02 13:35:14.613 如何使用T-SQL来查找作业开始和作业结束之间的时间间隔? 我试过这个: select (job_end – job_start) from tableA 但结果是: 1900-01-01 01:14:37.367

在PHP中使用PDO打开的SQL连接必须closures

当我使用PHP的内置MySQL函数在PHP中打开MySQL连接时,我执行以下操作: $link = mysql_connect($servername, $username, $password); mysql_select_db($dbname); //queries etcetera mysql_close($link); 当我打开与PDO的连接时,它看起来像这样: $link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password); //prepare statements, perform queries 我是否必须像使用mysql_connect()和mysql_close()那样显式closures连接? 如果没有,PHP如何知道我什么时候完成连接? TIA。

MySQL导出到outfile:CSV转义字符

我有一个时间表的数据库表与一些常见的feilds。 id, client_id, project_id, task_id, description, time, date 有更多,但那是它的要点。 我在该表上运行一个导出到CSV文件的导出,以便为用户提供其数据的备份。 它也被用来作为一个macrosExcel文件的数据导入与一些自定义报告。 这一切都与我一起循环使用php的时间表,并打印到一个文件的行。 问题是一个大的数据库可能需要几个小时才能运行,这是不可接受的。 所以我用MySQL INTO OUTFILE命令重写了它,并将其减less到几秒钟,以便运行,这非常棒。 现在的问题是我似乎无法逃避描述字段中的所有新行字符等。 真的,用户可以在这里input潜在的任何字符组合,包括回车/换行。 这是我有的MySQL代码片段: SELECT id, client, project, task, REPLACE(REPLACE(ifnull(ts.description,''),'\n',' '),'\r',' ') AS description, time, date INTO OUTFILE '/path/to/file.csv' FIELDS ESCAPED BY '""' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM …. 但… 当我尝试查看输出文件的源代码时,文件中仍然存在换行符,因此Excel的CSV导入将打破Excel向导创build的所有花式macros和数据透视表。 任何关于最佳行动的想法?

SCOPE_IDENTITY()为GUID?

任何人都可以告诉我,如果有相当于SCOPE_IDENTITY()使用GUIDs作为SQL Server中的主键? 我不想首先创buildGUID并保存为variables,因为我们使用顺序的GUID作为主键。 任何想法什么是最好的方法来检索最后插入的GUID主键?

在SQL Server 2008中只比较两个DATETIME,而不是date

我有两个表,其中列[date]是typesDATETIME2(0) 。 我必须比较两个logging只有他们的date部分(日+月+年),丢弃时间部分(小时+分钟+秒)。 我怎样才能做到这一点?

从SQL 2008中的外键关系生成删除语句?

是否有可能通过脚本/工具生成基于表fk关系的删除语句。 即我有表:DelMe(ID),有30个表的fk引用它的ID,我需要先删除,有一些工具/脚本,我可以运行,将生成基于FK关系的30删除语句为了我 ? (顺便说一句,我知道关于级联删除关系,我不能在这个现有的数据库中使用它) 我正在使用Microsoft SQL Server 2008

从types列表中获取IDataReader

我有一个有100万个元素的List<MyObject> 。 (它实际上是一个SubSonic集合,但不从数据库加载)。 我目前正在使用SqlBulkCopy如下: private string FastInsertCollection(string tableName, DataTable tableData) { string sqlConn = ConfigurationManager.ConnectionStrings[SubSonicConfig.DefaultDataProvider.ConnectionStringName].ConnectionString; using (SqlBulkCopy s = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.TableLock)) { s.DestinationTableName = tableName; s.BatchSize = 5000; s.WriteToServer(tableData); s.BulkCopyTimeout = SprocTimeout; s.Close(); } return sqlConn; } 我使用SubSonic的MyObjectCollection.ToDataTable()从我的集合构buildDataTable。 但是,这会在内存中复制对象,效率低下。 我想使用SqlBulkCopy.WriteToServer方法使用IDataReader而不是DataTable,这样我就不会在内存中复制我的集合。 从列表中获取IDataReader的最简单方法是什么? 我想我可以实现一个自定义的数据阅读器(如这里http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx ) ,但是必须有一些简单的东西,我可以在不编写一堆generics代码的情况下做。 编辑:似乎没有人可以轻松地从一组对象中生成一个IDataReader。 接受当前的答案,即使我希望框架内置的东西。