【问题标题】:create table with records in sql server with powershell: what's best?使用 powershell 在 sql server 中创建包含记录的表:什么是最好的?
【发布时间】:2011-04-20 20:16:17
【问题描述】:

我需要从来自select-object 的对象的 powershell 数组开始在 sql server db 上创建和填充一个表。我需要使用正确的数据类型和字段创建表。

我熟知的一种方法是export-csv,然后是invoke-sqlcmdBULK INSERT,但我更喜欢跳过 csv 导出。

invoke-sqlcmd 通常如何用于从散列表数组开始创建/填充表? 您知道不使用invoke-sqlcmd 的其他方法来完成相同的工作吗?我需要使用System.Data 吗?怎么做?

谢谢

编辑 1:另一种可能的方式是 New-Object System.Data.SqlClient.SqlConnection,通过它我可以为每个数组元素 ExecuteNonQuery()

编辑 2:始终基于 System.Data 的另一个选项是更新 SqlDataAdapter 实例。

【问题讨论】:

    标签: sql-server powershell system.data


    【解决方案1】:

    我为脚本专家写了一篇博客文章,其中涵盖了这种情况

    http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/01/use-powershell-to-collect-server-data-and-write-to-sql.aspx

    使用博文中演示的代码,您可以使用任何 PowerShell 命令创建一个 System.DataTable,然后创建一个 SQL Server 表,最后将 DataTable 插入到新创建的表中。这是一个例子

    $dt = get-psdrive | out-datatable
    Add-SqlTable -ServerInstance "Z003\R2" -Database dbutility -TableName psdrive -DataTable $dt
    Write-DataTable -ServerInstance "Z003\R2" -Database "dbutility" -psdrive"diskspace" -Data $dt
    

    【讨论】:

    • 谢谢,它看起来非常符合我的要求。我会告诉你的。
    • 我必须先将我的哈希表数组转换为数据表吗?是否有一些简单的方法可以实现这一点,例如只使用cast
    • 好吧乍得!我在互联网上找到了sqlservercentral 的以下帖子,这并不奇怪是你写的:),在那里你介绍了out-datatable 函数。你认为这是一个好的选择吗?它是否保留数据类型?非常感谢您的帮助。
    • 我认为 Scripting Guy 文章是 SQLServerCentral 文章的更新版本。 PowerShell 在推断数据类型方面做得不错,所以我没有搞乱明确定义类型。您需要将 getenumerator 与哈希表一起使用。这是一个使用带有哈希表的 out-datatable 的示例: $a = @{name='john';dob='1/1/1980';age=31}; $a.GetEnumerator() |出数据表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多