Sql server SSIS包和SQL Server数据工具(这取代了BIDS)之间的区别是什么
我们有一些大型Excel文件(每个文件通常超过100MB),需要定期将其引入SQL Server数据库,我正在寻找自动化此过程的选项 听起来微软不再支持其BusinessIntelligenceDevelopmentStudio(BIDS),取而代之的是SQL Server数据工具——商业智能(SSDT-BI)Sql server SSIS包和SQL Server数据工具(这取代了BIDS)之间的区别是什么,sql-server,ssis,sql-server-data-tools,bids,ssdt-bi,Sql Server,Ssis,Sql Server Data Tools,Bids,Ssdt Bi,我们有一些大型Excel文件(每个文件通常超过100MB),需要定期将其引入SQL Server数据库,我正在寻找自动化此过程的选项 听起来微软不再支持其BusinessIntelligenceDevelopmentStudio(BIDS),取而代之的是SQL Server数据工具——商业智能(SSDT-BI) 因此,我的选项似乎是SSDT-BI或SSIS包,但我不确定使用哪一个。有人能提供一些关于这两种解决方案的信息吗?请提供解决此问题的任何建议。d/c b/n SSI和SSDT未退出,但SS
因此,我的选项似乎是SSDT-BI或SSIS包,但我不确定使用哪一个。有人能提供一些关于这两种解决方案的信息吗?请提供解决此问题的任何建议。d/c b/n SSI和SSDT未退出,但SSI是SSDT的组成部分之一,表示SSDT包含SSI、SSR和SSA。d/c b/n SSI和SSDT未退出,但SSI是SSDT的组成部分之一,表示SSDT包含SSI、SSR、,和SSAS。我知道这是一篇老文章,它与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无关,但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();
您可以在ssdt中开发ssis包。您还有其他选择,如Powershell。我们对数据进行了大量转换,我听说SSIS包只能提供非常有限的转换功能。这是正确的吗?如果是这样的话,您认为这应该排除我们的SSDT和/或SSDT-BI吗?您研究过PowerPivot吗?几年前,它是处理大型Excel文件、数百万行、转换和聚合的一个非常好的解决方案。这取决于具体情况。如果您从未在SSIS中工作过,我建议您在安装了SSIS的情况下旋转一个测试盒,这样您就可以看到所有可用的东西。从DBA的角度来看,还有一些需要考虑的问题,比如SSIS目录之类的维护。SSDT和SSDT-BI之间的区别是什么?我似乎找不到关于后者的太多信息。您可以在ssdt中开发ssis包。您还有其他选择,如Powershell。我们对数据进行了大量转换,我听说SSIS包只能提供非常有限的转换功能。这是正确的吗?如果是这样的话,您认为这应该排除我们的SSDT和/或SSDT-BI吗?您研究过PowerPivot吗?几年前,它是处理大型Excel文件、数百万行、转换和聚合的一个非常好的解决方案。这取决于具体情况。如果您从未在SSIS中工作过,我建议您在安装了SSIS的情况下旋转一个测试盒,这样您就可以看到所有可用的东西。从DBA的角度来看,还有一些需要考虑的问题,比如SSIS目录之类的维护。SSDT和SSDT-BI之间的区别是什么?我似乎找不到关于后者的更多信息。欢迎来到堆栈溢出。欢迎来到堆栈溢出。