我正在使用派生列任务使用CASE WHEN语句更改列数据.但是,我需要能够说..
SQL代码将是:
CASE WHEN Column01 LIKE '%i%' THEN '0' ELSE '1' END
Run Code Online (Sandbox Code Playgroud)
在SSIS表达语言中将是:
[Column01] == "i" ? "0" : "1" (that's for equals i, not, LIKE %i%.
Run Code Online (Sandbox Code Playgroud)
是否可以使用LIKE运算符?
我有一个带有数据流的SSIS包,它接受一个ADO.NET数据源(只是一个小表),执行一个select*查询,并将查询结果输出到一个平面文件(我也试过拉动整个表而不是使用SQL select).
问题是数据源提取的是一个Money数据类型的列,如果该值不为零,它就会很好地进入文本平面文件(如'123.45'),但当值为零时,它会显示出来在目标平面文件中为".00".我需要知道如何将前导零回到平面文件中.
我已经尝试了各种数据类型的输出(在平面文件连接管理器中),包括货币和字符串,但这似乎没有任何效果.
我在我的选择中尝试了一个case语句,如下所示:
CASE WHEN columnValue = 0 THEN
'0.00'
ELSE
columnValue
END
Run Code Online (Sandbox Code Playgroud)
(仍然导致'.00')
我尝试过这样的变体:
CASE WHEN columnValue = 0 THEN
convert(decimal(12,2), '0.00')
ELSE
convert(decimal(12,2), columnValue)
END
Run Code Online (Sandbox Code Playgroud)
(仍然导致'.00')
和:
CASE WHEN columnValue = 0 THEN
convert(money, '0.00')
ELSE
convert(money, columnValue)
END
Run Code Online (Sandbox Code Playgroud)
(结果为'.0000000000000000000')
这个愚蠢的小问题就是杀了我.任何人都可以告诉我如何将零Money数据类型数据库值作为'0.00'添加到平面文件中?
我试图以编程方式创建一个SSIS包,其中包含从同一数据库中的表A到表B的简单数据流.我正在使用这里给出的例子.该包被创建并保存到dtsx文件中,但是当我在visual studio中打开它时,我看到源表和目标表尚未被选中.
我还想在到达目的地之前插入转换任务.
好吧,我设法选择了源表和目标表,任务甚至成功运行.结果我需要
(a)为源和目的地分别使用一个oleDB连接[我不喜欢这种方式; 我只想使用一个连接]
(b)在目的地SetComponentProperty("AccessMode",3)中将Accessmode设置为3 ,等同于Table或View - 快速加载.
有什么文件在这个地方.我能找到的只是SetComponentProperty所做的,而不是它可以采取的所有参数.例如.除了"AccessMode"之外我还可以放在哪里?,第二个参数3或2或1代表什么?
仍试图映射绰号.STOCK:PipelineTask表示DataFlow任务.什么是绰号...复制专栏?
我正在我的工作站上开发SSIS作业,数据流任务在我的本地工作站上打开逗号分隔的平面文件,并将数据导入远程服务器上的SQL服务器数据库.
当我尝试在SQL目标对象中选择目标表时,它给出了以下错误:
所选数据源位于远程计算机上.批量插入操作可以在本地计算机上执行.
如何解决问题,以便我可以测试我的SSIS包.
我试图基于公共密钥更新表中的字段与来自另一个表的数据.如果它是直接的SQL,它将是这样的:
Update EHSIT
set e.IDMSObjID = s.IDMSObjID
from EHSIT e, EHSIDMS s
where e.SITENUM = s.SITE_CODE
Run Code Online (Sandbox Code Playgroud)
但是,这两个表不在同一个数据库中,所以我正在尝试使用SSIS进行更新.哦,sitenum/site_code在一个中是varchar,在另一个中是nvarchar,所以我必须进行数据转换才能匹配.
我该怎么做?
我有一个数据流对象,源为EHSIDMS,目的地为EHSIT.我有一个数据转换将unicode转换为非unicode.但是如何根据匹配进行更新?我已尝试使用SQL命令作为数据访问模式,但它似乎没有源表.如果我只是映射要更新的字段,它如何根据字段匹配限制它?
我准备将我的源表导出到Excel或其他东西,然后尝试从那里输入,虽然似乎所有这些都会让我删除数据转换步骤.
不应该有更新数据任务或什么?它是那些数据流转换任务之一,我只是不知道它是什么?
除非手动打开文件并单击“保存”,否则我在使用SSIS处理excel文件时遇到问题。
我注意到,如果文件是.xls或.xlsx,它不会起作用
该文件是从SSRS项目下载到Excel的,
我可以使用文件系统任务来移动,重命名,删除等文件,但是当我尝试使用数据流任务来访问文件中的内容时,出现错误外部表的格式不正确。
然后,我必须打开文件,单击“保存”,文件处理正常。
不知道这是否意味着什么。...
我注意到,当我在记事本中打开原始文件时,第一行包括:
xl / workbook.xml
保存文件后,第一行更改为:
[Content_Types] .xml
使用Microsoft Visual Studio 2012。
错误:
错误:TransferMoneyReconcile上的错误0xC0202009,连接管理器“ Excel连接管理器”:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。OLE DB记录可用。来源:“ Microsoft Office Access数据库引擎”结果:0x80004005说明:“外部表的格式不正确。”
ExcelConnectionString:
Provider = Microsoft.ACE.OLEDB.12.0;数据源= \ 192.168.234.567 \ ftp \ Sample \ Money \ Archive_Transfer Money to Manager.xlsx; Extended Properties =“ EXCEL 12.0 XML; HDR = NO”;
任何帮助/建议表示赞赏!
谢谢!
史蒂文
我有一个任务,它使用数据流任务将记录从 Oracle db 提取到我们的 SQL。该套餐每天运行约 45 分钟。此包将刷新约 15 个表。除了一个,其他都是增量更新。所以几乎每个任务都运行 2 到 10 分钟。
完全更换的一包运行长达 25 分钟。我想调整此数据流任务以使其运行得更快。
表中只有 400k 行。我确实阅读了一些关于 DefaultBufferSize 和 DefaultBufferMaxRows 的文章。我有以下疑问。
如果我可以将 DefaultBufferSize 设置为 100 MB,是否有任何地方可以查看或分析我可以提供多少。
DefaultBufferMaxRows 设置为 10k。即使我给了 50k 并且我为 DefaultBufferSize 提供了 10 MB,如果它只能容纳大约 20k,那么 SSIS 会做什么。只是忽略那些 30k 记录还是它仍然会拉出所有那些 50k rocords(假脱机)?
我可以使用日志记录选项来设置适当的限制吗?