你好,
我是新来的,有一个问题,可能对任何有FME经验的人都有一个超级明显的答案。SQL对我来说也是相当新的。
我有一个sqlcreator,其中运行了以下SQL脚本,针对Oracle空间对象数据库。
我知道我需要在“属性暴露框”中输入一些东西,但我无论如何也弄不清楚它到底需要什么。
fme_-sql_分隔符/声明glasshouser编号;begin select count(*)into glasshouser from glasshouse_ar;end;/declare railwaystation pt编号;begin select count(*)into railwaystation pt from railwaystation_pt;end;/declare marinewater ar编号;begin select count(*)into marinewater ar from marinewater_ar;end;。/
当我在SQL脚本中使用以下代码时,在'attribute to expose'中,我只需要'count(*)',它就会像预期的那样抛出count。
从RAILWAYSTATION_PT中选择count (*);
谁能给我指出正确的方向,这样我就可以让SQL creator输出正确的东西。
我想让它给我这三个方面的计数:
GLASSHOUSE_AR
RAILWAYSTATION_PT
MARINEWATER_AR
当我运行工作台的当前状态时,它连接到数据库很好,运行SQL,并返回。
我到目前为止还没有成功尝试过的特征是:
count(*)从railwaystation_ptrailwaystation_ptglasshousear到RAILWAYSTATION_PTCOUNT(*)
我还尝试了“从SQL查询填充”,但没有返回任何结果。
谢谢你的帮助!
你好,
我正在用包含两个日期的SQL查询读取Oracle非空间数据库。当直接在查询中输入日期时,没有问题,运行得很顺利。
我想从这些日期制作用户参数。因此,我创建了选择“date”作为类型的已发布用户参数。
然后我尝试在我的SQL查询(WHERE子句)中使用该参数,但我一次又一次地得到一个类型错误。我试过几种不同的符号,但似乎不起作用…
此项工作(无参数)
AUTO_START_DATE < = TO_DATE (“15/12/2019”,“DD / MM / YYYY”)
然后我尝试了几种不同的用法:
$ (START_DATE)
但我似乎找不到正确的语法。
谢谢你!
我从Oracle存储的plsql函数返回一个变量字符串。函数在sql creator中成功执行,没有错误。我需要知道如何/在哪里查看/填充从存储函数返回的输出。
你好,
可能对你来说很简单,但我完全是个新手!
我在一个服务器上托管了数十万个PDF和TIF格式的文件,我们称之为服务器1。
在另一台名为server 2的服务器上的SQL2008数据库中,我有超过100,000条记录,其中包含一个特定的参考编号,该编号分别链接这些文件(因此,一个参考编号可以使用相同的参考编号链接到多个pdf或TIFs,例如服务器2上的编号19994321将与PDFs/ TIFs相关,服务器1上的编号19994321)。
在Excel电子表格中,我引用的列表数据在服务器2,我想从服务器检索文件1和我需要叫他们使用两个字段名称SQL数据库中定义了PDF / TIF—“Subject_Name”或“doc_Type”和包含特定词语作为参数来缩小搜索:“网站定位图”和/或“位置”。
然后,我想将这些文件(一旦从服务器1识别出来)复制到另一个位置——称为服务器3。
对于为此设置工作台的任何帮助都是很有价值的。
谢谢大家
你好,
因此,我有一个update SQL查询,由SQL执行器转换器执行。它看起来像UPDATE *TABLE_NAME* SET COLUMN_NAME = @VALUE(ATTRIBUTE_1),其中OTHER_COLUMN_NAME = '@VALUE(ATTRIBUTE_2)'
第一个属性总是一个数字,但第二个是字符串,所以我必须加引号。但是,字符串可以包含引号本身,这会导致查询在这些情况下失败。如果在它周围加上双引号,就会得到一个SQL错误:它认为我将它设置为数据库表中另一列的值,而不是FME属性。
如何在where子句中放入属性2的整个字符串值,报价和所有?
谢谢!
早上好,
我有两张桌子,从azure数据库中提取。我正在使用内部连接命令,但是当它运行时,它从一个表中重复和处理特性,与另一个表中相同数量的特性。例如:表A有10个特性,表B有11个。当我运行sqlcreator表A时,它会重复11次(表B的特性)。有办法防止这种情况发生吗?下面是SQLCreator的截图。
谢谢,
大卫
如何使用此选项在写入后运行两个过程。
参考以下教程,该教程使用SQLExecutor在SQL中执行空间查询-https://knowledge.亚搏在线safe.com/articles/19649/performing-native-spatial-queries-on-database-tabl.html
这适用于OSM Postgis表中的节点,但是如果我在方法上尝试完全相同的方法,它就会抛出一个错误。例如:
select *,“身份证”,“tags”->“highway”作为“highway”,从osmwhere“tags”->“highway”不为空,且在(osm.geom,ST_GeomFromText (“@ value (_geometry)”,4326))=真
日志显示,在我在上面代码中下划线的字符(osm.geom)。
如何使用此方法查询方法?
你好,
我有下面的脚本SQL执行器以下内容:
update tbx.ext_compare_person set gesnam_d = tbx.diakriet_cip(gesnam_d,sourcekey,'Gesnam'),gesvor = tbx.diakriet_cip (gesvor、sourcekey Vornam),gesnam_d_partner = tbx.diakriet_cip(gesnam_d_partner,sourcekey,'GesnamPartner')其中组织= '1234',应用程序代码= 'ABC')
参数:
当我通过“Run”(在SQL语句中测试)执行脚本时,它运行得很好。它更新正确的行。但是当我完成翻译后,它不会像测试那样运行(它不会更新任何内容)。
这里最好的解决方案是什么?我做错什么了吗?
提前六个月,欧文
如何使用存储的SQL过程而不是FME编写器创建/更新Oracle表。这个过程已经有很多验证和记录,所以这将是一个很大的优势,而不是在FME中重新做所有的事情。是否可以使用,即SQLExecutor吗?如果是这样,如何在FME中设置它?
你好,
我有一个SQLExecutor连接到SQL数据库上的SDE。我正在使用带有嵌入连接的Microsoft SQL Server非空间格式。
我的SQL语句是:
FME_SQL_DELIMITER;
去
DISABLE TRIGGER gisowner.SEGME_MSLINK_COUNTER ON gisowner.[a10];
去
我得到以下错误:
查询失败,可能是由于不正确的陈述。
提供程序错误“(-2147217900)关键字“trigger”附近的语法不正确。
发生了致命错误。查看上面的日志文件了解详细信息
无法使用“MSSQL_ADO”读取数据集“AHS_GIS”中的特性
下一个查询将导致错误(ORA-00900:无效的SQL语句)。
FME_SQL_DELIMITER /beginupdate tbx.ext_compare_person set gesnam_d = tbx.diakriet_cip(gesnam_d,sourcekey,'GNAAM'),gesvor=tbx.diakriet_cip(gesvor,sourcekey,'vnaam'),gesnam_d_p = tbx.diakriet_cip(gesnam_d_partner,sourcekey,'GNAAM_P'),其中org - ecode = 'ABDC', applicatiecode = 'ABC';end;/commit;/
Redshift是一个强大的基于列的数据仓库,但需要进行一些调优才能充分发挥其潜力。最重要的组件之一是排序和分布键的选择。
目前,Redshift编写器允许创建表(如果不存在),但不扩展用于创建排序键和分布键的传统SQL语句。
请求REDSHIFT写入器上的一个额外选项,以便在写入器创建表时允许选择排序和分布键。
红移排序键:
https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-sort-key.html
红移Dist密钥:
https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-best-dist-key.html
我使用datedifference ecalculator计算完成日期(包含日期和时间)和现在之间的天数差。这是为了查明完成日期是否在过去30天内。现在,我已经使用DateDiff函数将其转换为一个SQL查询:SELECT DateDiff (day,completed_date,CURRENT_TIMESTAMP)从…
SQL函数向datedifference ecalculator返回不同的结果,通常少于1天。例如,datedifference ecalator说,今天(9月14日)和8月17日完成的日期之间的差值是29,但是SQL Server(和Excel)说28。准确地说,完成时间为17/08/2018 00:32:00,比对时间为14/09/2018 17:20:00左右。excel给出的差为28.7,我会四舍五入到28,因为还没有29天。
看看嵌入式变压器,如果小数点值大于或等于5,则datedifference ecalculator将输出值四舍五入。SQL Server DateDiff函数有点复杂,因为正如这个stackoverflow主题所说,DATEDIFF使用日期部分的边界。所以对于“天”,23:59今天是明天00:01前一整天。
https://stackoverflow.com/questions/5131958/datediff-rounding
例如:
选择DATEDIFF(天,“2018-09-14 23:59:00”,'2018-09-15 00:01:00')
= 1
为了得到更精确的值,你得有时间,然后除以24:
选择(转换(数字(10,3),日期差异(小时,“2018-09-14 23:59:00”,“2018-09-15 00:01:00”)))/ 24
= 0.04166,然后你可以四舍五入。
datedifference ecalulator为这个比较返回零,我对此表示同意。
所以这两种方法似乎都不完美。任何想法吗?
嗨,FME用户!
我有一个工作台,在桌面上运行得很好,但在服务器上就不行了。
我们正在使用FME 2017 (build 17722)。
工作台对SQL数据库进行查询,以找到一些表名和类型(它是SDE)。
然后,我在相同的SQL数据库上执行另一个查询,以检查上一个查询获得的表上是否有任何SDE锁。
如果我找到SDE锁,脚本停止。如果没有SDE锁,然后我使用PythonCaller来删除、截断或重命名这些表。为此,我使用arcpy(表是SDE特性类)。
如我所说,在桌面上,它干净又完美!但是在服务器…没有错误消息,只是日志文件中没有解释的故障。
如果我禁用SQL执行器,FME服务器像我的桌面一样工作。
但只要我启用SQL执行器…它失败了!
我知道我可以用python做所有这些…但它在2014年的FME服务器上工作…但是在2017年的FME服务器中没有更多…
任何想法?