span8
span4
我正在使用一个FeatureReader连接到我们的SDE GDB。我想在FeatureReader中添加一个查询(WHERE子句),这样我就只能在Feature类中提取上个月编辑的记录(或者有时在最近5天内编辑的记录)。
当我通过MS SQL Server Management Studio (SSMS)查看SDE数据时,我看到了不同格式的数据:
在SSMS - LAST_UPDATED字段是一个日期字段:
last_updated (datetime2(7)、空)
2018-12-01 16:23:56.0000000
在数据检查器- LAST_UPDATED字段是字符串字段:
last_updated(字符串)
20181128133118
我的问题:
1)是否有方法来指定我希望加入哪些属性?现在我使用一个属性管理器来删除不需要的属性。
2)我如何只在一个WHERE子句,使我只在特定的时间范围内拉入我想要的数据?我有试过“LAST_UPDATED”> '201805亿'但这并没有带来任何好处。我假设这是因为FME将字段视为字符串?如果这是真的,那么…
3)使用FeatureReader时,如何让FME将此字段视为日期字段?
4)一旦我可以使用该数据作为日期,我如何做一个WHERE子句,使我只拉出数据已编辑在过去5天?我将每天运行这个查询,所以我希望查询是这样的LAST_UPDATED> = DATEADD(DAY,-5,GETDATE())
我正在使用FME(R) 2018.1.0.2 (20180903 - Build 18547 - WIN64)
也试了一个WHERE从句的@DateTimeCast( “LAST_UPDATED”,日期时间)> '201812.01亿'但得到以下错误:
ArcObjects的错误编号是:'-2147216072'。来自ArcObjects的错误消息是:{底层DBMS错误[[Microsoft][SQL Server Native Client 11.0][SQL Server] '>'附近不正确的语法
你好,茱莉亚,
对不起,给您添麻烦了。
RE: Where子句——它将直接传递到底层数据库,因此您需要使用的语法将是该数据库喜欢的任何语法。我猜(但您需要尝试)需要使用数据库的术语指定日期。所以类似:“LAST_UPDATED”> '2018-05-00 00:00:00'
你需要提前做日期计算,得到你想要的字符串,然后在Where子句定义中使用它,我认为这样会更简单:
不知道那对你是否有用,但我愿意试一试。(在连接DateTimeConverter之后,将last_updated > @Value(_result_datetime)放在FeatureReader的Where子句中)
至于你想读什么就读什么,不幸的是FeatureReader还没有这种魔力——请在网站上投票https://knowledge.亚搏在线safe.com/idea/45144/featurereader-select-attributes-to-read.html
如果这是一个很大的问题,你可以改变你的计划,只是用一个正常的“读者”(然后用脚本参数计算你的日期字符串) - 然后你能够选择的属性阅读。或FME的数据库之外创建一个视图,并有FeatureReader阅读视图,而不是真正的表...但如果你正在使用SDE我不知道这是否是一种选择。
谢谢你这些想法戴尔。我喜欢DateTimeCalculater的想法随后DateTimeConverter进入了FeatureReader。我曾尝试它和它的作品。
我的每个问题的解决方案:
1。我会等待在未来的版本中这个功能:)
2。数据库语法是关键。查询工作,如果我使用以下WHERE子句:“LAST_UPDATED”> = '2018年5月1日00:00:00'
3。FMEIS看到这一领域作为一个日期字段,但它可以作为一个FME格式或工作台内的字符串。读取或写入数据字段当是一个日期。
4。我用了一个DateTimeCalulator的戴尔的建议,然后DateTimeConverter。从DateTimeConverteris新创建的变量(_last_5_days)然后在FeatureReader的WHERE子句中使用:“LAST_UPDATED”> = '@Value(_last_5_days)'
©2019安全亚搏在线软件公司法律