从Powershell调用TRUNCATE和BULK INSERT INTO SQL命令

chr*_*982 1 sql-server powershell

我正在尝试从Powershell将简单的TRUNCATE和BULK INSERT运行到SQL中。这些命令可行吗?

$server = "TESTING"
$database = "TESTAREA"
$connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database;")

$query = "TRUNCATE TABLE [TESTAREA].dbo.[client_lookup]"

$query = "BULK INSERT [TESTAREA].dbo.[client_lookup]
FROM '\\fss\share\Accounts\Lookup_Tables\Client_Lookup.csv'
WITH
(
KEEPIDENTITY,
FIRSTROW = 2,
FIELDTERMINATOR= ',',
ROWTERMINATOR = '0x0a'
)"

$connection.Close()
Run Code Online (Sandbox Code Playgroud)

这两个查询都在SQL中执行,过去我使用类似的Powershell脚本运行SQL查询(而不是BULK INSERT或TRUNCATE)。我对Powershell相当陌生,我缺少什么吗?

Dan*_*man 5

您需要创建SqlCommand对象,并在打开的连接上执行脚本。重构的例子:

$server = "TESTING"
$database = "TESTAREA"
$connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database;")

$query = "TRUNCATE TABLE dbo.client_lookup;
BULK INSERT dbo.client_lookup
FROM '\\fss\share\Accounts\Lookup_Tables\Client_Lookup.csv'
WITH
(
KEEPIDENTITY,
FIRSTROW = 2,
FIELDTERMINATOR= ',',
ROWTERMINATOR = '0x0a'
)";

$connection.Open();
$command = new-object System.Data.SqlClient.SqlCommand($query, $connection);
$command.ExecuteNonQuery();
$connection.Close();
Run Code Online (Sandbox Code Playgroud)