在SQL Server中不是所有的行都使用OPENROWSET导入



我有一个问题,从TXT文件导入到SQL Server 2016中的表,无法导入所有行。我试图使用OPENROWSET语句读取数据,使用XML来定义文件中列的正确格式。

所以我使用这个脚本读取数据:

select *
FROM OPENROWSET (BULK 'C:SQL_DATAVAR_REG_20190831.TXT', 
FORMATFILE = 'C:SQL_DATAMR_VAR_REG.xml'   AS t1;

开始,但在18954行时成功完成,但文件由30000+行组成。问题不在数据中,因为如果我复制已导入的recors,在位置18.954、previous和next中,为了安全,问题仍然存在。

就好像有一个要导入的行数限制。请有人可以解释我为什么SQL这样做?

您可以尝试添加两个额外的参数,这将有助于解决问题:

  • ERRORFILE
  • MAXERRORS

——UPDATE——

你可以试着打两个电话。首先,SQL #1。然后是SQL #2。目的是绕过文件中所谓的错误行#18955。

SQL # 1

SELECT *
FROM OPENROWSET (BULK 'C:SQL_DATAVAR_REG_20190831.TXT'
, FORMATFILE = 'C:SQL_DATAMR_VAR_REG.xml'  
, ERRORFILE = 'C:SQL_DATAMR_VAR_REG.err'
, MAXERRORS = 100
) AS t1;

SQL # 2

这里有一个技巧可以绕过文件中所谓的"坏"行。

SELECT *
FROM OPENROWSET (BULK 'C:SQL_DATAVAR_REG_20190831.TXT'
, FORMATFILE = 'C:SQL_DATAMR_VAR_REG.xml'  
, ERRORFILE = 'C:SQL_DATAMR_VAR_REG.err'
, MAXERRORS = 100
, FIRSTROW = 18956 -- real data starts on that row
) AS t1;

相关内容

  • 没有找到相关文章

最新更新