标签: openrowset

使用openrowset将Excel文件读入临时表; 我该如何引用该表?

我正在尝试编写一个存储过程,将Excel文件读入临时表,然后按下该表中的一些数据,然后将该表中的选定行插入永久表.

所以,它是这样开始的:

SET @SQL = "select * into #mytemptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database="+@file+";HDR=YES', 'SELECT * FROM [Sheet1$]')"

EXEC (@SQL)
Run Code Online (Sandbox Code Playgroud)

这似乎有用.

但是,如果我尝试这样的事情:

Select * from #mytemptable
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

无效的对象名称'#mytemptable'

为什么#mytemptable不被认可?有没有办法让#mytemptable可以访问存储过程的其余部分?

提前谢谢了!

sql-server temp-tables openrowset

2
推荐指数
1
解决办法
1万
查看次数

如何更改我的T-SQL查询以覆盖csv文件而不是向其附加数据?

我将以下T-SQL代码配置为使用SQL Server代理作业每天运行.我的数据库在SQL Server 2012上运行.

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\;HDR=YES;FMT=Delimited','SELECT * FROM [myfile.csv]')

SELECT ReservationStayID,NameTitle,FirstName,LastName,ArrivalDate,DepartureDate FROM [GuestNameInfo]
Run Code Online (Sandbox Code Playgroud)

我的问题是此查询的输出将附加到csv文件中的现有记录.我希望每次运行SQL Server代理作业时输出都覆盖现有内容.

如何修改我的查询以实现此目的?

t-sql sql-server csv openrowset

2
推荐指数
1
解决办法
811
查看次数

在INSERT语句中使用OPENROWSET,同时指定另一列的值?

我正在使用OPENROWSET(BULK ...)将文件内容插入到我的表中.问题是我还需要在同一个INSERT语句中指定另一列的值.

我有这样的事情:

INSERT INTO MyTable
SELECT *
FROM OPENROWSET(BULK 'c:\foo.bin', SINGLE_BLOB)
Run Code Online (Sandbox Code Playgroud)

我确定有一种方法可以在这里指定不同列的值,但我不知道如何.

sql insert openrowset

1
推荐指数
1
解决办法
4639
查看次数

使用 OPENROWSET、OPENQUERY 为数据访问配置 SQL Server 实例

我在运行 Windows 7 x-64 的独立非联网开发 PC 上安装了 SQL Server 2012 完整版。假设 FOO 是我的 PC 的名称,而我的 SQL Server 命名实例是 FOO\SQL2012。

我正在尝试按照此处的示例进行操作,这些示例展示了如何使用存储过程作为数据源创建新的临时表。

我想执行这些查询中的任何一个,但我收到了显示的错误。

   SELECT * into #temp FROM OPENQUERY("FOO\SQL2012", 'exec MySchema.MyStoredProc')

   **ERROR: Server 'FOO\SQL2012' is not configured for DATA ACCESS.**
Run Code Online (Sandbox Code Playgroud)

或此查询:

  SELECT * INTO #temp FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2012;Trusted_Connection=yes;',
 ' EXEC MySchema.MyStoredProc')

 **ERROR: Msg 11529, Level 16, State 1, Procedure sp_describe_first_result_set, Line 1
Run Code Online (Sandbox Code Playgroud)

无法确定元数据,因为每个代码路径都会导致错误;请参阅其中一些以前的错误。**

我将如何配置 SQL Server 实例以允许当前经过身份验证的用户(无论它可能是谁)对本地实例使用 OPENROWSET、OPENQUERY?

通过 Windows 进行身份验证的用户和通过 SQL Server 进行身份验证的用户是否需要这些查询的单独版本?

windows-authentication sql-authentication openquery openrowset sql-server-2012

1
推荐指数
1
解决办法
2万
查看次数

在OPENROWSET SQL Server中使用参数

我正在创建一个存储过程,在其中调用另一个存储过程(该过程返回了很多列,并且我只需要一个列值,所以我无法创建临时表来存储值)OPENROWSET

当我用下面的话就可以了

declare @AgencyID int=15,@PatientID int=3701
SELECT a.PrimaryInsuredName 
    FROM OPENROWSET('SQLNCLI',  
    'Server=ServerName;Database=DbName;Trusted_Connection=yes',
    'exec USP_Billing_GetPatientWithInsurence 3701,15') AS a;
Run Code Online (Sandbox Code Playgroud)

一切正常。但是我想传递参数进行调用, USP_Billing_GetPatientWithInsurence因为值将是动态的。所以我用下面的代码

 declare @AgencyID int=15,@PatientID int=3701
    SELECT a.PrimaryInsuredName 
        FROM OPENROWSET('SQLNCLI',  
        'Server=ServerName;Database=DbName;Trusted_Connection=yes',
        'exec USP_Billing_GetPatientWithInsurence '+ @PatientID +','+ @AgencyID+'') AS a;
Run Code Online (Sandbox Code Playgroud)

但它不起作用当我运行此查询时发生错误, Incorrect syntax near '+'.我不知道为什么会这样。请为此提供解决方案。我也为此搜索了一下,但找不到合适的解决方案。

谢谢

t-sql sql-server openrowset

1
推荐指数
1
解决办法
4697
查看次数