nim*_*her 2 sql-server odbc ssis
我正在尝试使用公用表表达式将增量数据从ODBC服务器加载到SQL服务器.在Dbeabver应用程序中运行查询时,执行正确:
with test as
(
SELECT userid,sum(goldbalance)
FROM Server.events_live
where eventTimestamp>=DATE '2016-01-01' + INTERVAL '-100 day'
group by userid
order by sum(goldbalance) desc)
)
select * from test
Run Code Online (Sandbox Code Playgroud)
从ODBC源的sql命令表达式运行它时,由于语法错误而失败.它看起来如下:
with test as
(
SELECT userid,sum(goldbalance)
FROM deltadna.events_live
where eventTimestamp>=DATE '"+@[User::datestring]+"' + INTERVAL '-100 day'
group by userid
order by sum(goldbalance) desc)
)
select * from test"
Run Code Online (Sandbox Code Playgroud)
datestring变量获取服务器日期并将其转换为格式为yyyy-mm-dd的字符串.我通常使用这种方法从ADO.NET中提取数据并且它可以正常工作.
有没有其他方法可以使用ssis变量从ODBC服务器提取增量数据?
尝试这个代码,它适用于我自己的SQL Server表:
SELECT userid,sum(goldbalance) AS SUMGOLD
FROM deltadna.events_live
WHERE eventTimestamp >= DATEADD(DAY, -100,CONVERT(DATE,?))
GROUP BY userid
ORDER BY SUMGOLD desc
Run Code Online (Sandbox Code Playgroud)
您必须单击OLEDB源编辑器中的参数来配置所需的内容.使用 '?' 在查询中表示变量.
如果您查询是否太复杂,将其存储在存储过程中并像这样调用它:
EXEC shema.storedProcedureName ?
Run Code Online (Sandbox Code Playgroud)
并映射'?' 到您的变量@user :: DateString
表达式位于数据流属性中的数据流之外.选择表达式属性并添加动态查询.
你的表达将是
"SELECT userid,sum(goldbalance) AS SumGold
FROM deltadna.events_live
where eventTimestamp>=DATE "+@[User::datestring]+" +INTERVAL '-100 day'
group by userid
order by SumGold desc"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10735 次 |
| 最近记录: |