首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于调用的Powershell进度条-sqlcmd

用于调用的Powershell进度条-sqlcmd
EN

Stack Overflow用户
提问于 2018-07-26 07:02:32
回答 1查看 1.1K关注 0票数 1

因此,我正在尝试创建一个备份脚本,该脚本将从我的mssql下载csv,然后压缩文件,然后将备份上传到亚马逊S3。

我的问题是,当我每天运行脚本时,表的平均行数是2000万行。它看起来就像是永远滞后,直到20分钟后才完成。我想知道是否有一种方法可以特定地显示invoke-sqlcmd的进度条。我做了一些研究,我能找到的所有例子都是只在for循环上创建进度条,而不是单个命令进度。

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ECHO "Starting Download"
    Import-Module sqlps
    #$SQLquery="SELECT * FROM dbo.$PREFIX$i"
    $SQLquery="SELECT * FROM dbo.events"
    ECHO "Executing query = $SQLquery"

    $hostname = "."
    $pass = "test"
    $usern = "test"
    $database = "theDB"

    $result=invoke-sqlcmd -ServerInstance $hostname  -query $SQLquery -HostName $hostname -Password $pass -Username $usern -Database $database -verbose


    #echo $result
    pause
    $result |export-csv -path $CSVPATH -notypeinformation
    pause
    ECHO "Starting Zip:"
    Compress-Archive -LiteralPath $CSVPATH -CompressionLevel Optimal -DestinationPath $ZIPPATH

    ECHO "Starting Delete: $CSVPATH "
    del "$CSVPATH" 
    echo "Removed $CSVNAME" 

    aws s3 cp $ZIPPATH s3://test_$ZIPNAME

    pause

这个脚本可以工作,但正如我所说的,我想在invoke-sqlcmd中添加一个进度条,这样它在下载这个大文件时就不会看起来冻结了。

这是我到目前为止所能找到的,但这只对循环进程有效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$VerbosePreference = "Continue"
Write-Verbose "Test Message"

for ($a=1; $a -lt 100; $a++) {
  Write-Progress -Activity "Working..." -PercentComplete $a -CurrentOperation "$a% complete" -Status "Please wait."
  Start-Sleep -Milliseconds 100
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 23:27:40

考虑到您的大约2000万条记录数据集,在System.Data.Common namespace中使用一些.NET类可能是一个好主意。我不确定Export-Csv是如何实现的,但是System.IO.StreamWriter对于编写大文件非常有效。

一个带有内联注释的简单测试/工作示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# replace $tableName with yours
$sqlCount = "SELECT COUNT(*) FROM dbo.$($tableName)";
$sqlSelect = "SELECT * FROM dbo.$($tableName)";
$provider = [System.Data.Common.DbProviderFactories]::GetFactory('System.Data.SqlClient');
$connection = $provider.CreateConnection();
# replace $connectionString with yours, e.g.:
# "Data Source=$($INSTANCE-NAME);Initial Catalog=$($DATABASE-NAME);Integrated Security=True;"; 
$connection.ConnectionString = $connectionString;
$command = $connection.CreateCommand();

# get total record count for Write-Progress
$command.CommandText = $sqlCount;
$connection.Open();
$reader = $command.ExecuteReader();
$totalRecords = 0;
while ($reader.Read()) {
    $totalRecords = $reader[0];
}
$reader.Dispose();

# select CSV data
$command.CommandText = $sqlSelect;
$reader = $command.ExecuteReader();

# get CSV field names
$columnNames = @();
for ($i = 0; $i -lt $reader.FieldCount; $i++) {
    $columnNames += $reader.GetName($i);
}

# read and populate data one row at a time
$values = New-Object object[] $columnNames.Length;
$currentCount = 0;
# replace $CSVPATH with yours
$writer = New-Object System.IO.StreamWriter($CSVPATH);
$writer.WriteLine(($columnNames -join ','));
while ($reader.Read()) {
    $null = $reader.GetValues($values);
    $writer.WriteLine(($values -join ','));
    if (++$currentCount % 1000 -eq 0) {
        Write-Progress -Activity 'Reading data' `
            -Status "Finished reading $currentCount out of $totalRecords records." `
            -PercentComplete ($currentCount / $totalRecords * 100);
    }
}
$command.Dispose();
$reader.Dispose();
$connection.Dispose();
$writer.Dispose();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51532823

复制
相关文章
pandas中的窗口处理函数
滑动窗口的处理方式在实际的数据分析中比较常用,在生物信息中,很多的算法也是通过滑动窗口来实现的,比如经典的质控软件Trimmomatic, 从序列5'端的第一个碱基开始,计算每个滑动窗口内的碱基质量平均值,当滑动窗后的平均碱基质量值小于给定阈值时,去除该窗口以及之后的剩余碱基,以此达到去除低质量碱基的目的。
生信修炼手册
2020/07/14
2K0
mysql窗口函数over中rows_MySQL窗口函数
窗口函数是OVER(),其中对应子句有PARTITION BY 以及 ORDER BY子句,所以形式有:
全栈程序员站长
2022/11/10
5.9K0
隐式转换函数_隐函数可以转化为显函数
隐式转换函数(implicit conversion function)是以implicit关键字声明的带有单个参数的函数,这样的函数将被自动应用,将值从一种类型转换为另一种类型。隐式转换函数叫什么名字是无所谓的,因为通常不会由用户手动调用,而是由Scala进行调用。但是如果要使用隐式转换,则需要对隐式转换函数进行导入。因此通常建议将隐式转换函数的名称命名为“one2one”的形式。 scala会考虑如下位置的隐式转换函数:
全栈程序员站长
2022/09/27
8440
藏在白酒行业中的猛兽
某高端白酒黄牛价又双叒叕涨价了。 几个月前还能用2000块钱拿下的一瓶酒,如今已经涨破了2400元大关。一方面,官方渠道上明码标价一千多元/瓶的某白酒常年断货,而另一面,黄牛却货源充足,肆意推高卖价,试图将利润越炒越高。 最终,局势进入了一个“越贵越难买,越难买越贵”的怪圈。 在这个怪圈的背后到底发生了什么? 这就要先来聊一聊黄牛的看家本领——囤酒。 从雇人排队到人肉众包,黄牛走过的那些年 黄牛囤酒不是什么黑科技。 从实体店开始,黄牛就懂得用雇人排队的方式来应对限购。电商兴起后,账号代替了真人名额,也给这
腾讯云安全
2019/05/16
6120
藏在白酒行业中的猛兽
解决JQuery中的ready函数冲突
jQuery确实是一个提高前端开发效率的好框架(虽然很多大牛们都说它效率不咋地),但是用好它有时候并不容易,也许你也遇到过以下情况: 一个aspx页面通常可以包含其它ascx控件,如果在多人协同开发的情况下:程序员小张在控件A.ascx中使用了 $().ready(function{}),而程序员小王又在控件B.ascx中也使用了ready函数,程序员小李在做页面时,把A.ascx,B.ascx都拖到自己的页面中,然后在页面中也需要用到$().ready函数,这下好了: 虽然jQuery本身的设计还算不错,
菩提树下的杨过
2018/01/22
1.6K0
jQuery的弹出窗口插件colorbox
支持 照片,照片组,幻灯片,ajax,内联 和 iframe 框架。 通过CSS 控制外观,使用用户可以很容易重新定制外观。 不需要更改 ColorBox 的 javascript 文件就可以重新设定其行为。 可以依靠 callback & event-hooks 进行拓展,不需要修改源代码。 非常友好,不需要修改现有的 HTML,所有的选项都通过 JS 设置。
全栈程序员站长
2021/12/23
5.5K0
PostgreSQL 数据库中的窗口函数
一个窗口函数在一系列与当前行有某种关联的表行上执行一种计算。这与一个聚集函数所完成的计算有可比之处。但是窗口函数并不会使多行被聚集成一个单独的输出行,这与通常的非窗口聚集函数不同。取而代之,行保留它们独立的标识。在这些现象背后,窗口函数可以访问的不仅仅是查询结果的当前行。
beginor
2020/08/07
1.8K0
巧用R中的各种排名窗口函数
在sql中巧用窗口函数可以解决很多复杂的问题,窗口函数有4种函数类型:排名函数、偏移函数、聚合函数和分布函数,详细介绍可以浏览:
1480
2019/05/21
3.5K0
JQuery中bind和unbind函数
测试: 页面代码: <body> <input type="button" name="aaa" value="点击我"> <input type="checkbox" name="checkbox1"> </body> JQuery代码: $().ready(function(){ for (var i = 0; i < 3; i++) { $("input[type='button']").click(function(){ alert("aaaa"); }); } } alert("aaaa")会执行三次,在事件嵌套事件中,不希望看到这样的情况,需要把上层事件禁用,此时可引入bind和unbind函数解决。 引入函数: for (var i = 0; i < 3; i++) { $("input[type='button']").unbind("click"); $("input[type='button']").bind("click", function(){ alert("aaa"); }); } alert("aaa");仅执行一次。 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数 unbind() 方法移除被选元素的事件处理程序。能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。 event 是事件类型,类型包括:blur、flcus、load、resize、scroll、unload、click、dblclikc、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup和error等,当然也可以是自定义名称。 data 为可选参数,作文event.data属性值传递给事件对象的额外数据对象。 function 是用来绑定的处理函数。 语法: $(selector).bind(event,data,function) // event 和 function 必须指出下面些段代码做说明: 例1:删除p的所有事件 $("p").unbind(); 例2:删除p的click事件 $("p").unbind("click"); 例2:删除p元素click事件后出发的test函数 和 添加p元素click事件后触发的test函数 $("p").unbind("click",test);$("p").bind("click",test); 注意:要定义 .bind() 必须指明什么事件和函数现在来看个简单的demo ,整个div有一个点击收起展开的事件,如果想要点击链接但是不触发div的点击事件,需要在触发链接的时候把div的点击事件禁用,这里我用到链接mouseenter事件是unbind删除div的事件。这里还不算完,这时候只要鼠标进入链接区域,div的点击事件就删除了,我们还需要加入鼠标移出链接区域的时候恢复div点击事件。代码如下: 12345678910$(function(){ var Func = function(){ $(".com2").toggle(200); } $(".test").click(Func) $(".test a").mouseenter(function(){ $(".test").unbind(); //删除.test的所有事件 }); $(".test a").mouseleave(function(){ $(".test").bind("click",Func); //添加click事件 }); });event 是事件类型 … function 是用来绑定的处理函数。 部分内容来自http://www.dearoom.com/blog/详解unbind和bind/http://www.dearoom.com/blog/事件捕获事件冒泡和阻止事件冒泡/
一个会写诗的程序员
2018/08/17
1.1K0
利用jquery实现图片显隐特效
作者:matrix 被围观: 1,743 次 发布时间:2011-08-05 分类:Wordpress 兼容并蓄 | 2 条评论 »
HHTjim 部落格
2022/09/26
4.4K0
隐藏在PC轴中的秘密
正常情况下,按照目前主流的单细胞数据分析教程,是可以分析我们的数据的。但是,如果在分析过程中发现了不正常的现象,比如,batch这个幽灵真的在脑海里盘旋不去,我们就要检查batch的来源了。
生信技能树jimmy
2020/11/25
6000
隐藏在PC轴中的秘密
滑动窗口模式在 TPS 限制中的应用
在我们构建和优化高并发系统时,往往会遇到需要对服务的请求数进行限制的需求。这是因为无论服务多么强大,其处理能力总是有限的。超出处理能力的请求可能会导致服务过载,进而影响到整个系统的稳定性。对于这种情况,我们可以采用限流的方式来控制进入服务的请求数量,以保证服务的稳定运行。其中,滑动窗口模式是一种常见的限流算法。
运维开发王义杰
2023/08/15
3100
滑动窗口模式在 TPS 限制中的应用
不可不会的scala隐式转换
从类型S到类型T的隐式转换由具有函数类型S => T的隐式值定义,或者通过可转换为该类型的值的隐式方法来定义。隐含转换适用于两种情况:
Spark学习技巧
2021/03/05
7260
不可不会的scala隐式转换
MySQL不会丢失数据的秘密,就藏在它的 7种日志里
记住! 记住! 记住! 上边这张图,她是MySQL更新数据的基础流程,其中包括redo log、bin log、undo log三种日志间的大致关系,好了闲话少说直奔主题。
Java宝典
2021/01/14
3520
MySQL不会丢失数据的秘密,就藏在它的 7种日志里
c语言函数的隐式声明
编译器只有碰到函数原型的时候才知道这个函数的名字,参数类型个数返回值,到函数调用的时候才知道如何生成指令,所以函数原型必须出现在函数调用之前。
用户3094376
2018/09/12
2.7K0
隐藏在电影中的商业智能
自从科学在19世纪开始蓬勃发展,人类就分成了两大阵营,一方因它兴奋不已,另一方则终日思考恐惧:如果我们对科技失去控制,会不会最终被它取代?有趣的是,这个议题也被放到了技术发展的产物之一——电影中讨论。其中这五部电影,正是关于科技中的“小巨人”——商业智能。
数据观-数据分析平台
2018/07/09
6950
jQuery的animate函数
jQuery提供了一个animate函数,可以通过改变CSS属性来实现一些动画效果。
大江小浪
2018/07/25
1.7K0
jQuery函数的使用
上述代码将从Google的CDN中加载jQuery库。确保将其放在<head>标签或页面内容的顶部。
堕落飞鸟
2023/05/18
1.5K0
NProgress.js - 前端全站进度条插件 - 给你的网站添加一个加载进度条
前几天给博客换了@Veen Zhao大佬的Cuteen主题,非常好看,但是因为不想让自己的博客和其他人的千篇一律,于是决定在Cuteen主题的前提下逐渐设计一些自己需要的东西。正巧前几天发现因为网站带宽的原因,一些页面加载会花一些时间,页面没有任何动静仿佛会让人浏览体验变差,因为太穷无奈只有在不花钱的情况下提升一点点浏览体验(不知道是不是因为我强迫症的原因),这时候给网站添加一个加载进度条NProgress.js就是一个不错的选择了
Y5neKO
2022/01/13
6.2K0
NProgress.js - 前端全站进度条插件 - 给你的网站添加一个加载进度条
点击加载更多

相似问题

模式不会隐藏在JS、jQuery或CSS中

211

ajaxStop中的关闭模式

10

Jquery ajaxStop

40

ajaxStop函数中的Ajax函数

24

jquery::ajaxStop()与jquery::ajaxComplete()

38
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文