簡體   English   中英

PowerShell 使用多個查詢運行 SQL 文件並將結果導出到文本文件

[英]PowerShell run SQL file with multiple queries and export the result to text file

我有一個包含多個查詢的 SQL 文件。 我通過 PowerShell 運行 SQL 文件並將結果導出到文本文件。 結果只包括第一個查詢結果。

CREATE TABLE [MyDataBase].[dbo].[Persons] (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)

);

INSERT INTO [MyDataBase].[dbo].[Persons] (PersonID,LastName,FirstName,Address,City) VALUES( '101','LastnameA', 'FirstNameA', 'AddressA','CityA'),
( '102','LastnameB', 'FirstNameB', 'AddressB','CityB'),
( '103','LastnameC', 'FirstNameC', 'AddressC','CityC');

SQl 文件 SQL_File 在這里

Select LastName from [MyDataBase].[dbo].[Persons] where PersonID ='101'; Select LastName from [MyDataBase].[dbo].[Persons] where PersonID ='102'

我的 PowerShell 腳本代碼在這里

$SQLServer = "MyService"

$Database = "MyDatabase"

$InputSQPath = "c:\myPath\SQL_File.sql"

$OutputSQFile ="c:\myPath\Myresult.txt"


Invoke-Sqlcmd -ServerInstance $SQLServer -Database $Database -InputFile  $InputSQPath | Out-File -FilePath $OutputSQFile 

實際結果:

姓A

預期結果:所有結果

姓A

名字B

查詢是否必須執行三次? 你能代替我們使用 IN(然后是 ORDER BY)或 UNION 嗎?

例子:

select LastName from [MyDataBase].[dbo].[Persons] where PersonID in ('101','102','103) ORDER BY LastName;

或者

 Select LastName from [MyDataBase].[dbo].[Persons] where PersonID ='101'
UNION ALL
 Select LastName from [MyDataBase].[dbo].[Persons] where PersonID ='102'
UNION ALL
 Select LastName from [MyDataBase].[dbo].[Persons] where PersonID ='103'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM