- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个场景,我必须从未知的 excel 文件和未知的选项卡中获取数据。所以我创建了一个包含 50 列的表。
问题是进入第二个循环后 ssis 包没有进展。第一个循环获取文件名,第二个循环获取该文件中的选项卡名称。第二个循环中的 DTF 打开 excel 文件选项卡并读取数据并将其写入数据库表
我创建了 sperate 变量来存储从 foreach 循环容器检索的文件名和选项卡名称,并在 DTF 任务中使用它们。甚至 DFT 任务都没有出现任何错误。
在 DFT 中,我只有一个脚本源来打开 excel 文件并读取数据,然后将其传递给 oledb 目标。
在完成所有繁琐的工作后,现在循环处理 DFT 任务。在 DFT 上方的 foreach 循环中,我放置了一个脚本任务并弹出了一些测试。 MessageBox.Show("blabla")。及其工作原理。现在怎么办?
下面是脚本任务中的代码。
public class ScriptMain : UserComponent
{
private OleDbDataReader excelReader;
private OleDbConnection excelConnection;
private OleDbCommand excelCommand;
public override void PreExecute()
{
base.PreExecute();
// Open
GetDataFromExcelToReader(Variables.IndividualFileNamesForDFT, Variables.IndividualTabNamesForDFT);
}
public override void PostExecute()
{
base.PostExecute();
excelReader.Close();
excelConnection.Close();
}
private void GetDataFromExcelToReader(string p_strFileName, string p_strTabName)
{
string l_strConnectionString;
if (File.Exists(p_strFileName))
{
string extension = Path.GetExtension(p_strFileName);
extension = extension.Replace(".", "");
if (extension.ToLower() == "xlsx")
{
l_strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + p_strFileName + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";";
}
else
{
l_strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + p_strFileName + ";Extended Properties=\"Excel 4.0;HDR=NO;IMEX=1\";";
}
excelConnection = new OleDbConnection(l_strConnectionString);
excelConnection.Open();
excelCommand = excelConnection.CreateCommand();
excelCommand.CommandText = "SELECT * FROM [" + p_strTabName + "A1:AX1048576]";
excelCommand.CommandType = CommandType.Text;
excelReader = excelCommand.ExecuteReader();
}
}
public override void CreateNewOutputRows()
{
int counter = 0;
while (excelReader.Read())
{
Output0Buffer.AddRow();
Output0Buffer.FileName = Variables.IndividualFileNamesForDFT.ToString();
Output0Buffer.TabName = Variables.IndividualTabNamesForDFT.ToString();
Output0Buffer.Col1 = excelReader.FieldCount > 0 ? excelReader[0].ToString() : null;
Output0Buffer.Col2 = excelReader.FieldCount > 1 ? excelReader[1].ToString() : null;
Output0Buffer.Col3 = excelReader.FieldCount > 2 ? excelReader[2].ToString() : null;
Output0Buffer.Col4 = excelReader.FieldCount > 3 ? excelReader[3].ToString() : null;
Output0Buffer.Col5 = excelReader.FieldCount > 4 ? excelReader[4].ToString() : null;
Output0Buffer.Col6 = excelReader.FieldCount > 5 ? excelReader[5].ToString() : null;
Output0Buffer.Col7 = excelReader.FieldCount > 6 ? excelReader[6].ToString() : null;
Output0Buffer.Col8 = excelReader.FieldCount > 7 ? excelReader[7].ToString() : null;
Output0Buffer.Col9 = excelReader.FieldCount > 8 ? excelReader[8].ToString() : null;
Output0Buffer.Col10 = excelReader.FieldCount > 9 ? excelReader[9].ToString() : null;
Output0Buffer.Col11 = excelReader.FieldCount > 10 ? excelReader[10].ToString() : null;
Output0Buffer.Col12 = excelReader.FieldCount > 11 ? excelReader[11].ToString() : null;
Output0Buffer.Col13 = excelReader.FieldCount > 12 ? excelReader[12].ToString() : null;
Output0Buffer.Col14 = excelReader.FieldCount > 13 ? excelReader[13].ToString() : null;
Output0Buffer.Col15 = excelReader.FieldCount > 14 ? excelReader[14].ToString() : null;
Output0Buffer.Col16 = excelReader.FieldCount > 15 ? excelReader[15].ToString() : null;
Output0Buffer.Col17 = excelReader.FieldCount > 16 ? excelReader[16].ToString() : null;
Output0Buffer.Col18 = excelReader.FieldCount > 17 ? excelReader[17].ToString() : null;
Output0Buffer.Col19 = excelReader.FieldCount > 18 ? excelReader[18].ToString() : null;
Output0Buffer.Col20 = excelReader.FieldCount > 19 ? excelReader[19].ToString() : null;
Output0Buffer.Col21 = excelReader.FieldCount > 20 ? excelReader[20].ToString() : null;
Output0Buffer.Col22 = excelReader.FieldCount > 21 ? excelReader[21].ToString() : null;
Output0Buffer.Col23 = excelReader.FieldCount > 22 ? excelReader[22].ToString() : null;
Output0Buffer.Col24 = excelReader.FieldCount > 23 ? excelReader[23].ToString() : null;
Output0Buffer.Col25 = excelReader.FieldCount > 24 ? excelReader[24].ToString() : null;
Output0Buffer.Col26 = excelReader.FieldCount > 25 ? excelReader[25].ToString() : null;
Output0Buffer.Col27 = excelReader.FieldCount > 26 ? excelReader[26].ToString() : null;
Output0Buffer.Col28 = excelReader.FieldCount > 27 ? excelReader[27].ToString() : null;
Output0Buffer.Col29 = excelReader.FieldCount > 28 ? excelReader[28].ToString() : null;
Output0Buffer.Col30 = excelReader.FieldCount > 29 ? excelReader[29].ToString() : null;
Output0Buffer.Col31 = excelReader.FieldCount > 30 ? excelReader[30].ToString() : null;
Output0Buffer.Col32 = excelReader.FieldCount > 31 ? excelReader[31].ToString() : null;
Output0Buffer.Col33 = excelReader.FieldCount > 32 ? excelReader[32].ToString() : null;
Output0Buffer.Col34 = excelReader.FieldCount > 33 ? excelReader[33].ToString() : null;
Output0Buffer.Col35 = excelReader.FieldCount > 34 ? excelReader[34].ToString() : null;
Output0Buffer.Col36 = excelReader.FieldCount > 35 ? excelReader[35].ToString() : null;
Output0Buffer.Col37 = excelReader.FieldCount > 36 ? excelReader[36].ToString() : null;
Output0Buffer.Col38 = excelReader.FieldCount > 37 ? excelReader[37].ToString() : null;
Output0Buffer.Col39 = excelReader.FieldCount > 38 ? excelReader[38].ToString() : null;
Output0Buffer.Col40 = excelReader.FieldCount > 39 ? excelReader[39].ToString() : null;
Output0Buffer.Col41 = excelReader.FieldCount > 40 ? excelReader[40].ToString() : null;
Output0Buffer.Col42 = excelReader.FieldCount > 41 ? excelReader[41].ToString() : null;
Output0Buffer.Col43 = excelReader.FieldCount > 42 ? excelReader[42].ToString() : null;
Output0Buffer.Col44 = excelReader.FieldCount > 43 ? excelReader[43].ToString() : null;
Output0Buffer.Col45 = excelReader.FieldCount > 44 ? excelReader[44].ToString() : null;
Output0Buffer.Col46 = excelReader.FieldCount > 45 ? excelReader[45].ToString() : null;
Output0Buffer.Col47 = excelReader.FieldCount > 46 ? excelReader[46].ToString() : null;
Output0Buffer.Col48 = excelReader.FieldCount > 47 ? excelReader[47].ToString() : null;
Output0Buffer.Col49 = excelReader.FieldCount > 48 ? excelReader[48].ToString() : null;
Output0Buffer.Col50 = excelReader.FieldCount > 49 ? excelReader[49].ToString() : null;
}
}
}
最佳答案
你真的需要阅读 A1:AX1048576 吗?它是否处理这个并且只读取它需要的内容?
你能试着只读取你需要的 excel 文件的部分吗?例如,如果您有一个包含 10 列和 400 行的 excel 文件,请尝试阅读 A1:Z9999 - 想知道脚本任务是否只是因为试图将所有这些内容放入内存而陷入困境,然后由于结果集非常庞大而将其丢弃到磁盘。 .
关于ssis - DFT 中的脚本任务未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836874/
我有一些自定义控制流和数据流任务未显示在 SSIS 工具箱中。当我在 SSDT 中打开包含自定义任务的包时,加载该包时出现几个错误。 加载 MyModuleTemplate1.dtsx 时出错:由于错
我有一个现有的 SSIS 包 (load1),它将数据从一台服务器 (srv1) 加载到我的服务器 (srv2)。在我可以运行 load1 之前,还有 2 个其他负载需要在 srv1 上运行,然后 l
我有点困惑 async方法是否适用于 SSIS 作业。脚本任务项创建一个面向 .NET Framework 4.5 的 Visual Studio 项目,输出类型为类库。 如果我制作主要方法 publ
有没有一种方法可以在 SSIS 执行期间动态创建目标文件夹而不使用脚本任务,例如。我有代码 123、133、143,如果不存在,我想在下面创建一个文件夹位置 D:\Outbox\ACI\123 D:\
我需要执行 29 个 ssis 包。所以计划创建一个主包来执行所有这些包。我不知道如何实现这一点。能否请您简要解释一下。提前致谢 ! 最佳答案 这篇文章很好地概括了主包的功能,它基本上是一个在控制流中
我有一个像这种格式的字符串。就我而言,我只需要从字符串大小写中提取字符 1)12AB 2)SD12 3)1WE4 输出 1)AB 2)SD 3)WE 我只需要提取字符。我在 SSIS 包的派生列中使用
使用: Windows 7 企业版; Visual Studio Pro 2017 (15.3.5);固态硬盘 15.1 无法让数据查看器在我的 SSIS 包上弹出。我确实做了一些 Google-fu
我可以使用什么模式/通配符来分别获取以下两个文件?目前,我正在使用此模式 CRM#ContractsBillingAccount*.csv 但两个文件名都符合此模式。如何避免? CRM#Contrac
是否可以在脚本任务中将发生的异常重定向到另一个表/日志?如果是这样,该怎么做? 最佳答案 您可以在脚本任务中执行在 vb.net 或 C# 中可以执行的任何操作。但是如果你在一个脚本任务中做了这么多,
我使用 CSV 中的以下内容来测试 SCD。我认为它会识别 LocationID 并在必要时更新记录。但它没有。它只插入新记录。 我正在使用带有 Win 身份验证的 Visual Studio 201
我对 SSIS 事务隔离级别的问题很少。 考虑一个场景:我有一个执行 SQL 任务,它在表 A 中插入数据。这个任务指向一个数据流任务,它读取以前插入到 A 上的数据。我已经启动了分布式事务,如果我在
你好 我正在创建一个需要按指定顺序执行以下操作的 ssis 包: 1:处理一些数据 2:将该数据移动到其他一些表 3:获取一些数据并将其推送到纯文本文件中。 我为这些创建了 3 个存储过程,我为 1
使用SQLServer 2012 Enterprise,在“控制流”选项卡中单击鼠标右键时,在SSIS中看不到“程序包配置向导”。我可以看到所有其他项目(日志,数字签名...)。 以下是有关我的安装的
我有一个 Foreach 容器,其中有一个 执行进程任务 。我有很多 Console.WriteLine() 语句。 图像中突出显示的 3 个图像可用于从 .exe 获取输出。 我在包中声明了一个变量
SSIS 非常擅长处理所有记录都相同的平面文件,但当存在一点复杂性时就不太好了。 我想导入一个与此类似的文件 - Customer: 2344 Name: John Smith Item
当我在 SSIS 包 (ProtectionLevel) 上设置权限并输入 PackagePassword 时,当我在计算机上打开包时,它不会提示我输入密码。 我做错了吗? 最佳答案 你可能没有做错什
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我致力于创建 biml。从中生成 ssis 包。构建 SSIS 项目,然后在服务器上部署 ispac 文件。 但是这些所有手动步骤都可以自动化吗? 我可以使用命令行从 biml 生成 ssis 吗?除
我已经创建了一个 SSIS 包。如果包失败,我需要将事务应用于此包以进行回滚。我发现的是一个属性“TransactionOption”,它应该被赋予“Required”。我对吗 ?并且我已将包的 Tr
我在 Visual Studio 2015 中向 SSIS 添加自定义 SSIS 组件时遇到问题。 我的系统是:Windows 8.1 64 位 Visual Studio 社区 2015 版14.0
我是一名优秀的程序员,十分优秀!