无法将数据插入SQL数据库

时间:2019-10-01 12:35:17

标签: azure powershell azure-sql-database

根据我的研究,我们可以使用powershell命令Write-SqlTableData将数据导入SQL数据库。当我运行命令时,出现错误“无法访问目标表”,似乎我没有足够的权限。但是我使用SQL管理员帐户。

$data = import-csv 'D:\data.csv'
rite-SqlTableData -TableName $mytableNmae -ServerInstance $myservername -DatabaseName $mydbname -SchemaName dbo -Credential $mycreds -InputData $data -Force

1 个答案:

答案 0 :(得分:3)

根据我的测试,我们不能使用命令Write-SqlTableData将CSV文件导入到Azure SQL中,而只能使用它将CSV文件导入到本地SQL中 enter image description here

因此,如果要使用powershell将CSV文件导入到Azure SQL,则可以使用命令Invoke-SQLCmd一次插入记录。例如:

$Database   = ''

$Server     = '.database.windows.net'

$UserName   = ''

$Password   = ''

$CSVFileName = ''

 $text = "CREATE TABLE [dbo].[Colors2](
    [id] [int] NULL,
    [value] [nvarchar](30) NULL
) "
Invoke-SQLCmd -ServerInstance  $Server  -Database $Database -Username $UserName -Password $Password -Query $text

 $CSVImport = Import-CSV -Path $CSVFileName
 ForEach ($CSVLine in $CSVImport){

 $Id =[int] $CSVLine.Id
 $Vaule=$CSVLine.value
 $SQLInsert = "INSERT INTO [dbo].[Colors2] (id, value)
VALUES('$Id', '$Vaule');"
 Invoke-SQLCmd -ServerInstance  $Server  -Database $Database -Username $UserName -Password $Password -Query $SQLInsert


 }


Invoke-SQLCmd -ServerInstance  $Server  -Database $Database -Username $UserName -Password $Password -Query "select * from [dbo].[Colors2]"

此外,您还可以使用其他方式(例如BULK INSERT)来实现它。有关更多信息,请参阅https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=azuresqldb-current