我有一个问题,从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;