Tsql 如何在SQL SERVER 2012中使用OPENROWSET处理空值?

Tsql 如何在SQL SERVER 2012中使用OPENROWSET处理空值?,tsql,null,oledb,flat-file,openrowset,Tsql,Null,Oledb,Flat File,Openrowset,我有两个.txt文件。第一个文件(out.txt)的数据如下: empno,ename '7369','SMITH' '7499','ALLEN' '7521','WARD' '7566','JONES' '7654','MARTIN' '7698','BLAKE' '7782','CLARK' empno,ename,hiredate,comm '7369','SMITH','1980-12-17',NULL '7499','ALLEN','1981-02-20','300.00' '752

我有两个.txt文件。第一个文件(out.txt)的数据如下:

empno,ename
'7369','SMITH'
'7499','ALLEN'
'7521','WARD'
'7566','JONES'
'7654','MARTIN'
'7698','BLAKE'
'7782','CLARK'
empno,ename,hiredate,comm
'7369','SMITH','1980-12-17',NULL
'7499','ALLEN','1981-02-20','300.00'
'7521','WARD','1981-02-22','500.00'
'7566','JONES','1981-04-02',NULL
'7654','MARTIN','1981-09-28','1400.00'
'7698','BLAKE','1981-05-01',NULL
'7782','CLARK','1981-06-09',NULL
我的第二个文件(Output.txt)的数据如下:

empno,ename
'7369','SMITH'
'7499','ALLEN'
'7521','WARD'
'7566','JONES'
'7654','MARTIN'
'7698','BLAKE'
'7782','CLARK'
empno,ename,hiredate,comm
'7369','SMITH','1980-12-17',NULL
'7499','ALLEN','1981-02-20','300.00'
'7521','WARD','1981-02-22','500.00'
'7566','JONES','1981-04-02',NULL
'7654','MARTIN','1981-09-28','1400.00'
'7698','BLAKE','1981-05-01',NULL
'7782','CLARK','1981-06-09',NULL
现在,当我对第一个文件执行以下语句时,我得到了所需的输出:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\Data Migration;','SELECT * FROM out.txt'
但当我为第二个文件执行相同的代码时,我得到一个错误:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\Data Migration;','SELECT * FROM Output.txt'
我得到的错误是:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an
error. The provider did not give any information about the error.

Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing the query "SELECT * FROM Output.txt" for execution
against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 

我的理解是,因为我的第二个文件有一些空值,这可能是错误的原因。有人能帮我处理这种情况下的NULL吗?

您可以使用ISNULL选项并替换为所需的值