从CSV文件打开行集

3bygqnnd  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(98)

我试图从位于网络上的共享文件夹中的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
“,”附近语法不正确。
当我像这样删除服务器行时:

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文件。有线索吗?你认为这与服务器帐户没有访问我使用的帐户没有访问共享文件夹有关吗?

h9vpoimq

h9vpoimq1#

您使用了错误的供应商。您的连接字符串是为了连接到服务器而编写的(某种程度上)。对于this page上的示例E,您应该使用OPENROWSET的批量选项。
它看起来像这样,尽管你需要按照here的指令创建一个格式化文件。

SELECT *
FROM OPENROWSET (
    BULK 'D:\BCP\myFirstImport.bcp',
    FORMATFILE = 'D:\BCP\myFirstImport.xml'  
   ) AS t1;

相关问题