Sql 从CSV文件大容量插入到远程服务器中的表

Sql 从CSV文件大容量插入到远程服务器中的表,sql,sql-server,powershell,Sql,Sql Server,Powershell,我使用SQL server 2012和windows powershell。我尝试将本地CSV文件批量插入到远程服务器中的表中。我尝试将大容量插入与powershell脚本相结合,使用sqlcmd连接到该服务器以执行sql语句。我想出 $path= "C:\UT\testdata.csv" $customerSizeQuery = "BULK INSERT dbo.test FROM '$path' WITH (FIELDTERMINATOR =',', ROWTERMINATOR ='

我使用SQL server 2012和windows powershell。我尝试将本地CSV文件批量插入到远程服务器中的表中。我尝试将大容量插入与powershell脚本相结合,使用sqlcmd连接到该服务器以执行sql语句。我想出

$path= "C:\UT\testdata.csv"
$customerSizeQuery = "BULK INSERT dbo.test FROM '$path' WITH (FIELDTERMINATOR =',',     ROWTERMINATOR ='\n');"
# $server and $database is fit as the exact server and database name in my real script
SQLCMD -W -S $server -d $database -h-1 -Q ("$customerSizeQuery") 
显然它不起作用,因为路径是我的本地路径

然后我尝试将文件内容放入一个变量,但仍然有错误。似乎说$var不是一个表

$path= "C:\UT\testdata.csv"
$var= get-content $path
$customerSizeQuery = "BULK INSERT dbo.test FROM $var WITH (FIELDTERMINATOR =',',     ROWTERMINATOR ='\n');"
# $server and $database is fit as the exact server and database name in my real script
SQLCMD -W -S $server -d $database -h-1 -Q ("$customerSizeQuery")
我是sql和powershell的初学者,不知道如何做

有没有人有什么建议


非常感谢

大容量插入命令要求您提供一个SQL Server实例可以访问的数据文件(请参阅)。据我所知,无法将文件内容指定为大容量插入输入(正如您在第二次尝试中所尝试的那样)


如果您的服务器通过网络看到您的客户端,您可以尝试使用UNC指定CSV文件,例如\\client\UT\testdata.CSV。或者,您可以将CSV文件复制到SQL Server可以看到的网络位置。

如果您的本地计算机上安装了SQL客户端工具,为什么不使用bcp实用程序呢

$path = 'C:\UT\testdata.csv'
$outFile = 'C:\UT\bcpOut.txt'
bcp -W -S $server -d $database -i $path -o $outFile -t, -T

有关bcp命令的详细信息,请参阅。

6年后,需要在中指定,例如(在cmd中而不是在PS中):bcp table_name在%path%-t,-c-S%sqlserver%-d%sqldb%-t-o%logpath%-e%errorlogpath%