你好,
我的PostgreSQL和Postgis作者目前有一个问题。
当特征操作设置为“INSERT”时,INSERT在表的所有列上执行,而不只是在属性定义中指定的列上执行。
它会导致在特性属性中没有定义但在数据库中有默认值的列上出现空数据。
为例:
我有一张有四列的桌子(柱状1,柱状2,柱状3,柱状4)
这个柱状3有一个默认值(“”my_default”)
在我的脚本,我有一个特性可以向这个表中插入一些数据。此功能具有自动属性定义(以避免每次修改脚本时定义每个新列)。
但是我的客户没有column_3和column_4的任何数据。
所以,FME中的功能只有在其属性定义中定义的列“1”和列“2”(因为我选择了自动定义选项)。
在我运行脚本之后,我期待的结果是这样的:
柱状1 | 柱状2 | 柱状3 | 柱状4 |
数据1.1 | data1.2 | my_default | 零 |
而不是这个,我有这样的结果:
柱状1 | 柱状2 | 柱状3 | 柱状4 |
数据1.1 | data1.2 | 零 | 零 |
因为FME执行此请求:
插入到my-schema.my-table(列1,column_2,column_3,列_4)值(“data1.1”,“DATA1.2”空,零);
而不是这个:
插入到my-schema.my-table(列1,列_2)值(“data1.1”,“DATA1.2”;
当它为column_3插入空值时,不能使用默认值。
我的问题:
是否有任何选择可以避免这种行为并保留我的默认值?
PS:我简化了我的例子,随着我们的数据模型不断发展,在FME的属性定义中定义每个表的结构是很复杂的。只插入具有数据的列并让其他列使用默认值更容易。
自动定义可以帮助我们,因为我们只需要用正确的名称命名一个字段,就可以将它插入到数据库中(我们不必在属性定义中定义它)。
你好,
我尝试在Postgres表中导入Excel文件。
但是在插入Excel文件的行之前,我必须删除目标表中的所有记录,其中Excel文件中的列值与Postgres表中的字段值匹配。
我实现了使用对Excel列执行groupby操作的聚合器转换和在目标表中删除所有值与groupby值之一匹配的记录的sqlexecutor转换来执行删除操作。
这部分很好。
但是现在,在这之后,我不知道如何插入Postgres写入器上的insert操作。
因为sqlExecutor只从发起程序返回groupby值。
我不认为我可以使用一个数据库更新器变压器与fme_db_操作的上下文。
谢谢你的帮助。
我正在执行SDE数据库的插入和更新组合。我继续收到此消息:
检索表/功能类“trans.pipesegment”的arcObjects更新光标时出错。ArcObjects的错误号是:'-2147215975'。来自arcObjects的错误消息是:点数小于功能所需的点数
我已经阅读了有关此消息的ESRI文档,并执行了所有解决方法。然而,我不认为它们适用于这种特殊情况。此外,我已经检查了这些特征的几何结构,并且检查了所有内容。
我以前使用过这个工作区,没有任何问题,但是,自从更新到最近的版本以来,我遇到了这个前所未有的问题。对于所有传入功能,我有故障模式与后果分析属性设置为相应的更新或插入。检查故障特征后,它确实具有预期值故障模式与后果分析。
写入器的配置如下所示:
这是被检查数据的一个子集,显示故障模式与后果分析价值观:
有谁知道是什么导致了上面的错误并最终导致编写失败吗?
嗨,我正在将更改更新应用于存储在地理数据库中的OS主地图。然而,它没有插入新特性
我正在使用两个功能合并,一个用于查找删除的功能,另一个用于查找要插入的更新和新功能。然后转到属性创建器,使用DELETE创建fme_db_operations字段,插入和更新值。
我的作者参数如下:
TOID是唯一的值字段。它正在删除和更新现有功能,但不插入新功能。
任何帮助和建议将不胜感激。
我已经附上了工作台,让您看看是否有帮助。
谢谢,
马特
你好,
我想知道如何插入免责声明/元数据从一个文件夹到所有压缩文件夹在另一个文件夹?
我的设置包括从SDE连接读取,一个InlineQuerier转换器,用于定义从数据中查询各种私有数据字段,一个属性保持转换器,在6个不同的作者获取数据并转换和压缩到文件地理数据库之前,只保留相关的字段供公众查看,KML,整形器,AutoCAD,猪瘟病毒还有GeoPackage。将每个要素类/数据集转换为6种不同的格式,形成一个导出文件夹。命名约定将被标准化(parks_kml.zip,地址\u shp.zip,水(fgdb.zip等)我需要在每个压缩文件夹中插入一个文本免责声明文件。
我想使用这个例子中的文件拷贝编写器(https://knowledge.safe.com/articles/881/including-addit亚搏在线ional-files-in-the-data-download-re.html)
通配符扇出了导出文件夹,但我无法使其工作。
谢谢!
@takashi
我有一个自定义转换器,它将API调用结果缓存到PostgreSQL表中。它在键上尝试DatabaseJoiner,如果找到匹配的记录,它将连接的特性直接传递到主输出端口。否则,它调用API,将结果传递给SQLExecutor以插入结果,以便在传递给transformer的后续特性上连接相同的键值。
不幸的是,DatabaseJoiner无法找到SQLExecutor在相同工作空间执行期间为后续特性存储的记录。我在sqleexecutor中尝试了显式提交(使用适当的分隔符声明),并在sqleexecutor之后尝试了5秒的每功能减速器,以防在fme工作台和postgresql之间存在某种竞争条件。运气不好。我仍然会遇到重复的密钥冲突,因为DatabaseJoiner的失败会导致同一个密钥被发送到API,并通过sqlExecutor再次尝试存储。我甚至尝试将sqlexecutor移到另一个工作区(通过workspaceRunner调用)。但错误依然存在。
此工作区中没有并行性,而且似乎每次调用SQLExecutor时都会提交INSERT。所以我感觉不到会导致这种行为的种族条件。希望别人能给你一些启示。
嗨,大家好,
我是一个FME乞讨者,试图将数据加载到Vertica数据库中。
我使用JDBC编写器来创建表和加载数据。表创建完美工作,但是数据没有加载,:
JDBC编写器:使用基于JDBC版本“4.0”构建的驱动程序“Vertica.jar”版本“08.01.0107”连接到“Vertica数据库”版本“08.01.0001”。
JDBC编写器:连接类“com.vertica.jdbc.vertiajdbc4connectionimpl”正在从“/c:/program files/fme/jre/lib/ext/vertica-jdbc-8.1.1-7.jar”加载
JDBC Writer:提交特性0
JDBC编写器:使用SQL创建表:创建表“bi-core-staging”。“events”(“geometry-areainsquaremeters”双精度,“季节字段ID”整数,“source callerlinenumber”整数,“context_u user_uuu id”整数,“日期时间”时间戳,“eventtype_protocolversion”整数,“FieldExtIds__”日期,“fieldid”整数,“插入时间”时间戳,“cropid”整数,“GeowerId整数,“context_u customer_uuu id”整数,“eventtype_version”varchar(5),“源代码”varchar(20),“Source_CallerMemberName”varchar(20),“源程序集”varchar(20),“UserExtId”varchar(20),“Context_Customer_Name”varchar(20),“EventType_Action”varchar(20),“context_applicationname”varchar(20),“EventType_ResourceType”varchar(20),“ConsumptionType”varchar(20),“模式”varchar(20),“事件类型资源”varchar(30),“BatchId varchar(40),“context\u servicename”varchar(40),“jobid”varchar(40),“Geometry_CentroidWkt varchar(50),“CoverageImages”varchar(2000年),“几何图形”varchar(65000)“数据列表”varchar(65000)“地图产亚搏在线娱乐平台品”varchar(65000)“Fields__”varchar(65000))
JDBC编写器:未能创建表“bi_core_staging.events”。错误:[Vertica][VJDBC](4213)回滚:对象“事件”已经存在
JDBC编写器:表“bi_core_staging.events”不存在
com.亚搏在线safe.fme.tabledoesntexistException
在COM.Fi亚搏在线el.FME.JDCBJeord.ChestSt表(JDCBCcript,Java:1767)
COM.saf亚搏在线e.fme.JdbcWriter.prepareForWriting(JdbcWriter.java:490)
在COM.Fi亚搏在线el.FM.jdcCyrr.Drand(JDCBCcript,Java:280)
com.亚搏在线safe.fme.tabledoesntexistException
com.亚搏在线safe.fme.tabledoesntexistException
目标功能类型路由相关器(路由工厂):com.safe.fme.tabledoesntexistexception亚搏在线
非常感谢你的帮助!
伙计们,
我有一个挑战,我不确定FME是否有这个能力。我有一些mapinfo共同定位的点需要作为属性块写入。我知道FME可以做到这一点,我已经成功地做到了。现在,挑战已经被设定为提出“放置规则”,即“移动”每个块插入,这样它就不会与位于同一位置的伙伴重叠。
就逻辑而言,我想做的是测试每个输入对象(点),看看是否有共定位点。然后根据共定位对象的数量循环遍历对象,将它们放置在某个固定的递增/递减Y(南北轴)坐标上。
例如var numpoints=5
对于i=2到numpoints
读取记录(i)
插入块X,Y +(我* -10)
下一个
有什么结构可以支持这个吗?
我也知道我需要一种方法来确保我没有测试已经测试过的点并插入\偏移块。
谢谢你的建议。
当我写Excel的时候,我希望看到添加了向下推行的选项。
当您有一个特定的Excel模板,其中包含相互重叠的命名范围,并且编写器超过了可用的行数时,下面的行将被覆盖。我希望看到行被添加,并将这个命名范围下的所有东西向下推,或选定的写作区域。
我们在尝试将注释文本与引线/尺寸线一起插入时观察到问题,到FGDB中的注释类中。注释文本和前导/维度行是源FFS文件中的独立组件。注释被正确地插入了,但是线性特征被插入了所有的空属性,并且在arcmap中被表示为一个图像。请建议。
以下GDAL/OGR作者提供了支持故障模式与后果分析写作。不幸的是,只可能匹配(更新|删除)记录与[系统id]字段,它是内部生成的。此问题影响以下格式:
空间陨石
卡托
混浊的
库奇德卜
弹性搜索
地质填筑
数据库
其他人呢?
在大多数情况下,我希望将增量更新作为数据保管器中的“变更集”数据,并将其与表中的现有数据同步为(更新插入删除)。新的变更集数据(提前)不知道内部[System ID]值是什么,因此更新和删除永远无法匹配和处理。
这个故障模式与后果分析format属性在非gdal /OGR FME编写器上的行为不是这样的,即这就像只能做a故障模式与后果分析匹配esri geodatabase[object_id]字段(也是内部生成的)。
使用时,是否可以让匹配ID引用任何“唯一ID”字段?故障模式与后果分析请写这些格式?
我在将对象转换为AutoCAD绘图的模型空间方面取得了巨大和惊人的成功,但我也被要求设置图纸空间。FME是否支持创建新的图纸空间和插入视区?
我有关于视图在模型空间中应该指向哪里的信息纸张空间可以很容易地用块和标准页面大小来定义所以我不需要让FME生成任何布局信息,只需将相关对象插入文件中。
我与ArcGIS在线专题作家有问题。
我得到的错误是Arcgis在线功能服务编写器:“地址”错误的功能在“功能服务名称”(已为此邮件替换)”。来自服务器的错误代码为“1000”,消息为:“无法在对象”user_****.service_id中插入重复的关键字行_特性服务名称(替换为此消息)'具有唯一索引'rowidindex'。重复的键值为(
我正在比较两个具有相同模式的功能服务,将新记录写入第二个。我希望有一个作为原始数据的功能服务(来自Arcgis的Survey123),并允许用户在第二个功能服务中进行QA和任何编辑。
这是一个非常简单的工作台,但是由于某些原因,rowid没有传递给可编辑的特性服务。
我有一种感觉,因为Agol为您创建了RowID是全局的,所以第一个功能成功地添加了RowID为空,但是第二个功能是不允许的,因为它也是空的。
有什么想法吗?@LauraAt亚搏在线Safe我看到你以前对这里的各种问题都有很好的回答。添加了工作台的屏幕截图。
欢呼,
安德鲁