抱歉,如果这已在其他地方得到回答,但我在这里或网上找不到任何东西。
openrowset 有文件大小限制吗?我正在尝试编写一个存储过程,其中一部分检查文件中是否存在某些字符,如果存在,我必须跳到存储过程的下一部分。到目前为止,我只是将整个文件批量插入到一个单列表中,然后做了:
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%}%')>0 GOTO NEXTSECTION
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%~%')>0 GOTO NEXTSECTION
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%#%')>0 GOTO NEXTSECTION
在处理大文件(有时超过 10GB)时,它很可靠,但速度很慢。我认为下面的查询对于大文件会更快
DECLARE @FILE NVARCHAR(MAX)
select @FILE = BULKCOLUMN from (
select * from openrowset(BULK N'filpath', single_clob) [a]
)a
IF(SELECT IIF(@FILE LIKE '%{%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%}%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%~%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%@%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%£%',1,0)) = 1 GOTO NEXTSECTION
但正如我所说的批量插入是可靠的,如果存在某种文件大小限制,我不想冒着使用 OPENROWSET 时文件被截断的风险。
任何关于此事的建议将不胜感激。