Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用PowerShell从SQL Server中的.csv导入数据?_Sql Server_Powershell - Fatal编程技术网

Sql server 如何使用PowerShell从SQL Server中的.csv导入数据?

Sql server 如何使用PowerShell从SQL Server中的.csv导入数据?,sql-server,powershell,Sql Server,Powershell,我有以下情况: Iam正在使用PowerShell,并且必须将数据从.csv文件导入到SQL Server数据库上已创建的表中。所以我不需要csv的标题行,只需要写数据 以下是我迄今为止所做的工作: #Setup for SQL Server connection #SQL Server Name $SQLServer = "APPLIK02\SQLEXPRESS" #Database Name $SQLDBName = "code-test" #Create the SQL Connecti

我有以下情况: Iam正在使用PowerShell,并且必须将数据从.csv文件导入到SQL Server数据库上已创建的表中。所以我不需要csv的标题行,只需要写数据

以下是我迄今为止所做的工作:

#Setup for SQL Server connection
#SQL Server Name
$SQLServer = "APPLIK02\SQLEXPRESS"
#Database Name
$SQLDBName = "code-test"

#Create the SQL Connection Object
$SQLConn = New-Object System.Data.SQLClient.SQLConnection
#Create the SQL Command Object, to work with the Database
$SQLCmd = New-Object System.Data.SQLClient.SQLCommand

#Set the connection string one the SQL Connection Object
$SQLConn.ConnectionString = "Server=$SQLServer;Database=$SQLDBName; Integrated Security=SSPI"
#Open the connection
$SQLConn.Open()

#Handle the query with SQLCommand Object
$SQLCmd.CommandText = $query
#Provide the open connection to the Command Object as a property
$SQLCmd.Connection = $SQLConn

#Execute 
$SQLReturn=$SQLCmd.ExecuteReader()

Import-module sqlps
$tablename = "dbo."+$name

Import-CSV .\$csvFile | ForEach-Object Invoke-Sqlcmd 
  -Database $SQLDBName -ServerInstance $SQLServer 
  #-Query "insert into $tablename VALUES ('$_.Column1','$_.Column2')"
#Close
$SQLReturn.Close()  
$SQLConn.Close()

我写了一篇关于在PowerShell中使用SQL的博客文章,所以你可以

如果您有可用的SQL-PS模块,我们可以很容易地做到这一点。只需为数据库名称、服务器名称和表提供值,然后运行以下操作:

$database = 'foxdeploy'
$server = '.'
$table = 'dbo.powershell_test'

Import-CSV .\yourcsv.csv | ForEach-Object {Invoke-Sqlcmd `
  -Database $database -ServerInstance $server `
  -Query "insert into $table VALUES ('$($_.Column1)','$($_.Column2)')"
  }
为了清楚起见,请将Column1、Column2替换为CSV中的列名称

确保CSV的值与SQL DB的格式相同,否则可能会出错


运行此命令时,您将看不到控制台的任何输出。我建议事后查询以确保您的值被接受。

您好,谢谢您的回答,但我在这里遇到了SQL\u PS模块的问题,当我将此命令直接放在控制台时,该模块工作,但从我的PS脚本启动它不工作,一个错误告诉我他们找不到模块请尝试将
导入模块sqlps
添加到脚本中。如果您运行的是PowerShell v3.0及更高版本,则不需要导入模块,但在早期版本中,您必须首先导入。因此,导入现在可以工作,但存在一些其他错误,您知道不使用此模块的解决方案吗?此模块是处理PowerShell中SQL Server数据的最佳方法。下一步是使用您当前使用的代码更新您的帖子。如果不将每个
$\u0.colname
放入子表达式(
$($\u0.colname)
),则此操作不可能成功。请把这个修好。此外,请注意,在SQL语句中放入这样的变量会使您容易受到攻击。你可能想考虑使用A。嗯,对于一个你已经注释了你的查询语句,这将导致一个问题。您移除了ForEach对象上的括号。您还添加了大量随机代码和来自web的复制/粘贴,其中任何一行都可能导致这些问题。我认为你所采取的这种方法使这比它需要的要困难得多。请只尝试我已经给你的方法,让我知道你遇到了什么错误。你好,FoxDeploy,我昨天已经做了,上面的代码正在调试你的代码如何工作。非常感谢。