В чем разница между пакетами служб SSIS и инструментами данных SQL Server (это заменило BIDS)
У нас есть несколько больших файлов Excel (часто размером более 100 МБ каждый), которые необходимо регулярно вносить в базу данных SQL Server, и я ищу варианты для автоматизации этого процесса.
Похоже, что Microsoft больше не поддерживает свою среду разработки бизнес-аналитики (BIDS) и заменила ее на нечто, называемое Инструменты данных SQL Server - Бизнес-аналитика (SSDT-BI).
Из-за этого, похоже, у меня есть варианты SSDT-BI или пакет SSIS, но я не уверен, какой из них использовать. Может кто-нибудь дать немного информации об этих двух решениях? Любой совет для поиска решения этой проблемы будет принята с благодарностью.
0 ответов
Я знаю, что это старый пост, и он не имеет ничего общего с SSIS или SSDT, но OP, похоже, интересовался другими возможными вариантами. Поэтому я хотел добавить это для всех, кто ищет простой способ импортировать файлы извлечения без использования любого из этих инструментов. Я создал буквально сотни процессов, в которых мне необходимо импортировать данные из файла извлечения (CSV, Access, Excel, FoxPro и т. Д.). Ниже приведен фрагмент Powershell, который загружает все листы в электронную таблицу Excel, а затем просто отображает содержимое в сетке данных, но вы должны иметь возможность легко добавить в свою логику, например, для импорта данных в таблицу. Конструктивная критика всегда приветствуется!
Clear-Host;
## You May Need to Download and Install the Microsoft Access Database Engine 2010 Redistributable: https://www.microsoft.com/en-us/download/details.aspx?id=13255
[String]$ExcelPath = "C:\Temp\TestSheet.xlsx";
[String]$TargetServer = "(local)";
[String]$TargetDatabase = "TestDB";
[String]$SourceConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES';" -f $ExcelPath;
[String]$TargetConnectionString = "Data Source={0};Initial Catalog={1};Trusted_Connection=True;" -f $TargetServer, $TargetDatabase;
$SourceFactory = [System.Data.Common.DbProviderFactories]::GetFactory("System.Data.OleDb");
$TargetFactory = [System.Data.Common.DbProviderFactories]::GetFactory("System.Data.SqlClient");
$SourceConnection = $SourceFactory.CreateConnection();
$SourceConnection.ConnectionString = $SourceConnectionString;
$SourceConnection.Open();
$SourceCommand = New-Object $SourceFactory.CreateCommand();
$SourceCommand.Connection = $SourceConnection;
$SourceCommand.CommandTimeout = [Int32]::MaxValue;
$TargetConnection = $TargetFactory.CreateConnection();
$TargetConnection.ConnectionString = $TargetConnectionString;
$TargetConnection.Open();
$TargetCommand = New-Object $TargetFactory.CreateCommand();
$TargetCommand.Connection = $TargetConnection;
$TargetCommand.CommandTimeout = [Int32]::MaxValue;
foreach($table in $SourceConnection.GetSchema("Tables").Rows){
try{
## Source
[String]$TabName = $table["TABLE_NAME"];
[String]$sqlString = "SELECT * FROM [{0}];" -f $TabName;
$SourceCommand.CommandText = $sqlString;
[System.Data.Common.DbDataReader]$SourceDataReader = $SourceCommand.ExecuteReader();
$dtData = New-Object System.Data.DataTable;
$dtData.Load($SourceDataReader);
## Target -- Bulk Insert data
if($dtData.Rows.Count -gt 0){
$TabName = "[{0}]" -f $TabName;
$sqlBulkCopy = New-Object System.Data.SqlClient.SqlBulkCopy($TargetConnection);
$sqlBulkCopy.DestinationTableName = $TabName;
foreach ($Column in $dtData.Columns){
$sqlBulkCopy.ColumnMappings.Add($column, $column)
};
$sqlBulkCopy.WriteToServer($dtData);
}
}catch{
$table["TABLE_NAME"];
$_.Exception.Message;
$_.Exception.ItemName;
};
};
#Housekeeping
$sqlBulkCopy.Close();
$sqlBulkCopy.Dispose();
$SourceCommand.Dispose();
$SourceDataReader.Dispose();
$SourceConnection.Close();
$SourceConnection.Dispose();
$TargetCommand.Dispose();
$TargetDataReader.Dispose();
$TargetConnection.Close();
$TargetConnection.Dispose();
$TargetConnection.Close();
$TargetConnection.Dispose();
[System.GC]::Collect();
SSIS и SSDT d/c b/n не закрываются, но SSIS является одним из компонентов SSDT. Означает, что SSDT содержит SSIS, SSRS и SSAS.