从CSV文件中打开

时间:2015-06-08 16:55:39

标签: sql-server csv

我正在尝试从位于网络上共享文件夹中的CSV文件中读取,但是收到以下代码的错误:

SELECT * INTO #TempTbl
FROM OPENROWSET
('SQLNCLI11',
'ServerName = <username>;Trusted_Connection=yes;',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=\\sharedpath\DIR path\;
SELECT * FROM CSV_File.csv) as Test
  

Msg 102,Level 15,State 1,Line 4

     

&#39;,&#39;附近的语法不正确。

当我删除这样的服务器行时:

SELECT * INTO #TempTbl
FROM OPENROWSET
('SQLNCLI11',
--'ServerName = <username>';Trusted_Connection=yes;',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=\\sharedpath\DIR path\;
SELECT * FROM CSV_File.csv) as Test

我收到以下错误:

OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "Invalid authorization specification".
OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "Invalid connection string attribute".
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "SQLNCLI11" for linked server "(null)" reported an error. Authentication failed.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "SQLNCLI11" for linked server "(null)". 

这是什么意思?此错误消息是否表示我的脚本中存在错误或访问权限问题?当我不再使用CSV驱动程序时,我能够从服务器上的表中读取同样的openrowset连接。

我不知道该怎么做才能让这个openrowset读取CSV文件。任何线索?您是否认为它与服务器帐户有关,无法访问我正在使用的帐户无法访问共享文件夹?

1 个答案:

答案 0 :(得分:0)

您使用的是错误的提供商。您的连接字符串是为连接服务器而编写的(有点)。您应该在this page上为每个示例E使用OPENROWSET的批量选项。

虽然您需要按照here说明创建格式文件,但它看起来像这样。

SELECT * 
FROM OPENROWSET( BULK '\\sharedpath\DIR path\CSV_File.csv', 
                 FORMATFILE = '\\sharedpath\DIR path\CSV_format.fmt');