久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

使用 powershell 導出 SQL 查詢輸出

Export SQL Query output using powershell(使用 powershell 導出 SQL 查詢輸出)
本文介紹了使用 powershell 導出 SQL 查詢輸出的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我對 Powershell 還很陌生,需要一些有關導出 SQL 服務器查詢輸出的指導.

I am fairly new to Powershell and need some guidance on exporting SQL server query output.

我們有一個非常大的表,我們要從中導出數據.大小很大,因此將根據我們將提供的日期范圍提取數據.因此,對于多個日期范圍,我們將導出多個 csv 文件.作為其中的一部分,我們將使用日期范圍在表之間運行一些查詢,并導出輸出.我曾嘗試使用 SQL 服務器的內置功能 BCP,但輸出不包含任何標題,格式也是一個問題.該表非常龐大,并且包含大約 500 多個列,因此使用 UNION 顯示標題不是使用 BCP 的選項.該查詢將由不太熟悉 SQL 的人使用,因此也不推薦使用 GUI.因此想檢查我們是否可以使用 powershell 做到這一點.下面是我在 SQL 中創建的查詢類型:

We are having a very large table from which we want to export data. The size is huge so data will be extracted based on date ranges we are going to give. So for multiple date ranges we will be exporting multiple csv files. As part of this we will be running some queries with joins between tables using the date ranges and the output will be exported. I have tried using inbuilt functionality BCP of SQL server but the output does not contain any headers and formatting is also an issue. The table is very huge and large number of columns that is around 500+ so using UNION for displaying headers is not an option using BCP. The query will be used by people not so familiar with SQL so GUI also not recommended. Hence wanted to check if we can do this using powershell. Below is the kind of the query i have created in SQL:

declare @date1 nchar(8)
declare @date2 nchar(8)
DECLARE @ExportFolderName NVARCHAR(90);
DECLARE @ExportFileName NVARCHAR(90);
Declare @db_name nvarchar(90)
--create temporary table
create table ##temp(
USER bigint,
USER_ID nvarchar(100)
);
--insert date ranges as required
Create table #dates(todate nchar(8), fromdate nchar(8))
insert into #dates values('20200501','20200601')
insert into #dates values('20200602','20200701')
insert into #dates values('20200702','20200801')
insert into #dates values('20200802','20200901')
select @db_name=db_name();
DECLARE database_cursor CURSOR FOR 
select todate,fromdate from #dates
OPEN database_cursor 
FETCH NEXT FROM database_cursor INTO @Date1,@date2
WHILE @@FETCH_STATUS = 0 
BEGIN 
SET @ExportFolderName = 'C:\test\';
SET @ExportFileName = @ExportFolderName + @db_name+'_logs_' + RTRIM(CONVERT(NVARCHAR(20), @date2,112)) + '.csv';
insert into ##temp
(USER, USER_ID)
(
**************
);
DECLARE @SqlStatement nvarchar(1000)
DECLARE @BcpStatement nvarchar(1000)
SET @SqlStatement = 'select * from dbo.logs E with (nolock) inner join ##temp U on E.USER=U.USER  and E.USER_ID COLLATE =U.USER_ID where E.DATE1 >= '''+@date1+''' and E.DATE1 < '''+@date2+''' order by event_id'
--print @sqlstatement
SET @BcpStatement = 'bcp "' + @SqlStatement + '" queryout "' + @ExportFileName + '" -c -S SERVER -d DAtabase -U Login -P PWD'
exec master..xp_cmdshell @BcpStatement
--print @bcpstatement
  FETCH NEXT FROM database_cursor INTO @Date1,@date2 
END 
CLOSE database_cursor 
DEALLOCATE database_cursor 
drop table ##temp
drop table #dates

我相信我們有類似下面的東西可以從 .sql 文件中導出數據:

I believe we have something like below to export data from a .sql file:

Invoke-Sqlcmd -ServerInstance ServerName -Database master -Username "user" -Password "pwd" -InputFile "C:\powershell\test.sql" | Out-File -FilePath "C:\powershell\test_(based on date).csv" 

但問題是將日期參數傳遞給 .sql 文件中的查詢.有人可以就如何實現這一點給我任何指示.

But the issue is passing date parameters to the query inside the .sql file. Could someone please give me any pointers on how to achieve this.

推薦答案

找到以下解決方案:

$DBScriptFile = "C:\Log\QUERY.sql"  #enter file path for .sql file
$outputpath="C:\log\" #Enter output path
$client="Client" # enter client name
$table="Table_name"
$sqlParameters =(("startdate='20191201'", "enddate='20191209'") ,("startdate='20191209'", "enddate='20191231'"),("startdate='20200101'", "enddate='20200201'"))
$count=1
foreach($i in $sqlParameters)
{
$filename=$outputpath+$client+"_"+$table +"_" + $count +".csv"

Invoke-Sqlcmd  ServerName -Database master -Username "user" -Password "pwd"   -InputFile $DBScriptFile -Variable $i |export-csv -path $filename -NoTypeInformation
$count=$count+1
}

我們需要添加 $(startdate) &$(enddate) 在 SQL 腳本文件中作為參數.

We need to add $(startdate) & $(enddate) in SQL script file for arguments.

這篇關于使用 powershell 導出 SQL 查詢輸出的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Modify Existing decimal places info(修改現有小數位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 国产精品福利久久久 | 美女一区| 亚洲国产成人一区二区 | 国产日韩一区二区三区 | 成人精品毛片国产亚洲av十九禁 | 国产精品久久久久久久久久免费看 | 日韩欧美网 | 日韩视频在线一区二区 | 成人在线视频一区 | 欧美精品1区2区3区 免费黄篇 | 久久久久亚洲av毛片大全 | 91精品久久久久久久久久入口 | 久久精品免费一区二区 | h视频免费观看 | 久久久女女女女999久久 | 久久一区二区三区四区五区 | 精品一区二区免费视频 | 日韩欧美视频免费在线观看 | 亚洲成人一区 | 婷婷久久精品一区二区 | 一级片视频免费观看 | 国产精品夜夜夜一区二区三区尤 | 久久久福利 | 91欧美激情一区二区三区成人 | 亚洲色图50p | 99资源| 精品久久久久久18免费网站 | 天天天天天天天干 | 日韩三级在线 | 中文字幕日韩欧美一区二区三区 | 欧美在线观看一区 | 免费黄篇| 综合色久 | 中文字幕av一区二区三区 | 欧美精品在线播放 | 欧美视频免费 | www久久久 | 激情av网站 | 欧美日韩综合一区 | 青青青伊人| 在线视频一区二区三区 |