【问题标题】:SQL Server 2008 RegEx CLR UseSQL Server 2008 正则表达式 CLR 使用
【发布时间】:2012-05-17 18:00:26
【问题描述】:

好的,我意识到 SS 2008 没有本地正则表达式函数。我还看到可以使用 CLR 添加它们。 我在http://msdn.microsoft.com/en-us/magazine/cc163473.aspx 找到了正则表达式 CLR ,但我不知道如何处理它们。

所以我有两个问题。正则表达式仅在针对 2 个字段导入记录(一次最多 1,000,000 条,每年最多 50,000,000 条)时使用。

第一个问题。我可以在我的代码(ASP.NET)中一次手动完成 1 条记录,我知道这会影响性能,但不知道有多大。对此有何意见?

第二个问题。有人可以向我指出有关如何安装我下载的 CLR 文件的简单分步说明吗?我尝试进行搜索,但要么没有显示我需要的信息,要么过于隐藏在其他信息中,我无​​法找到它。

谢谢

附:我正在运行 SS 2008(不是 R2)和 VS.NET 2008。

【问题讨论】:

  • MSDN 提供了有关如何从 t-sql 部署 CLR dll 的信息:msdn.microsoft.com/en-us/library/ms345099.aspx... 例如使用 PERMISSION_SET = SAFE 从 'c:\helloworld.dll' 创建组件 HelloWorld;
  • 你不是说从WHAT你导入你的记录吗?从另一个数据库?从一个文件?如果来自文件,它的格式是什么?
  • 从平面文件 (csv) 导入。需要从 2 个字段中删除所有非字母数字字符。
  • 我认为在导入之前转换该文件会更好。
  • MSDN 文章链接已失效。

标签: .net sql-server regex clr


【解决方案1】:

有关完整教程,请参阅article here

【讨论】:

  • 开始阅读它,但被别的东西分心了。看起来它可以满足我的需要。
【解决方案2】:

如果您只需要 REGEX 进行数据加载,那么您可以在 ASP.NET 中一次执行一条记录。即使使用 SQL CLR 集成,您也将一次执行一条记录,因为 SQL 一次将传递一条记录的值。如果您想在 where 子句中使用 REGEX 作为条件,那么 SQL CLR 集成将是唯一的选择。

我正在做的是一次解析一行。一行将导致 1 - 5 个 SQL 插入。然后我做那些 SQL 插入异步。如果下一个解析在插入之前完成,我会等待。就我而言,它是关于死气沉沉的,所以我得到了并行处理。如果 SQL 调用正则表达式,则您仅限于串行处理。

我经常解析和加载数据。如果您关心速度,请多关注 SQL 方面而不是解析。我什至禁用 SQL 索引解析和加载 1000 万条记录,然后重建索引。正则表达式一次一行通常比 SQL 插入快,除非 SQL 表没有索引。

【讨论】:

  • 那么您是否看到了很大的性能差异?一百万条更新命令发送到数据库,还是一条使用 CLR 功能的更新命令?如果影响很小,那么 ASP.NET 选项更有吸引力,因为我不必要求我的客户端也安装这些功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
相关资源
最近更新 更多