天道酬勤,学无止境

informix

IDS 对单用户应用程序来说是一种过度杀戮吗?(IDS an over-kill for a single-user app?)

问题 我有以下困境:我的客户(mom-n-pop 当铺)一直在使用我的 mgmt。 系统,使用 ISQL 开发,已有 20 多年的历史。 在这两个十年中,我根据每个客户的需求定制了该应用程序,或者在法律/法规发生变化时对其进行了定制。 大多数客户端是单用户站点。 有些有多个商店,但从不想要分布式数据库,不相信互联网或任何其他类型网络的可靠性或安全性。 所以,他们都使用标准引擎。 我已经能够解决一些 SE 限制并使用 ISQL 和 SE 做了一些聪明的技巧,但迟早,新法律可能会要求当铺客户、商品、电子传输等的图像,然后是时候升级了到 IDS,在 4GL 中重新编写应用程序或更改为另一个 RDBMS。 合乎逻辑且最简单的路线是 IDS/4GL,然而,当我向我的客户提到 Linux 或类 Unix 平台时,他们的反应很消极并要求使用 Windows 平台,所以最简单的解决方案可能是 4Js、Querix 等?...或 Access、Visual FoxPro 或 ???... 有人有什么建议吗? 回答1 看看 Aubit4GL - 也就是说,我相信,可用(或可以在)Windows 上编译。 是的,IDS 对单用户系统来说有点矫枉过正,但是如果 SE 没有提供您需要的所有功能,或者预计在不久的将来需要,那么它是一个非常明智的选择。 但是,稍加注意,它可以设置为(基本上)对用户完全不可见。

2021-09-21 19:41:40    分类:技术分享    sql   database   ms-access   informix   foxpro

变量表或列名(Variable table or column names)

问题 INFORMIX-SQL 或任何其他基于 SQL 的数据库: 假设我有一个应用程序,其中取决于某些列的值,例如: company.code char(3) {abc} company.branch char(2) {01} 我可以构造表名“abc01”以包含在 SELECT * FROM abc01 中吗? ? 换句话说,一个变量表名......同样的问题适用于列名。 回答1 只有在可以操作字符串和处理动态 SQL 的语言中。 它必须即时创建语句。 您只能在值的查询中使用占位符,而不能在查询的结构元素(例如表名或列名)中使用占位符。 回答2 仅当您使用动态 sql 时。 这就像您在应用程序中构建 sql 代码,然后使用诸如立即执行之类的东西。 sprintf(cdb_text1, "create table %s (field1 char(3));", usr_db_id); EXEC SQL execute immediate :cdb_text; 如果你使用动态sql,那就不好了,因为sql注入。

2021-09-21 07:25:49    分类:技术分享    sql   informix

在树莓派上安装 Informix Client SDK(Installing Informix Client SDK on Raspberry pi)

问题 我希望我的树莓派通过 Python 连接到 Informix 数据库。 我尝试为 python 安装 InformixDB 模块,但出现错误 NameError: 名称 'arch_' 未定义 但这是因为我没有在 pi 上安装 Informix Client SDK,它执行连接到数据库的底层工作,而模块只是一个包装器。 我搜索了 IBM 下载,但找不到 ARM 架构的包。 我也试过以下链接,但没有好处。 https://code.google.com/p/ibm-db/ https://code.google.com/p/ibm-db/wiki/README 有人可以帮我解决这个问题吗? 回答1 尝试下载适用于 Raspberry Pi 的 Informix Developer Edition。 它包含引擎和客户端。 问候。

2021-09-19 04:03:03    分类:技术分享    python   sdk   arm   raspberry-pi   informix

在树莓派上安装 Informix Client SDK(Installing Informix Client SDK on Raspberry pi)

问题 我希望我的树莓派通过 Python 连接到 Informix 数据库。 我尝试为 python 安装 InformixDB 模块,但出现错误 NameError: 名称 'arch_' 未定义 但这是因为我没有在 pi 上安装 Informix Client SDK,它执行连接到数据库的底层工作,而模块只是一个包装器。 我搜索了 IBM 下载,但找不到 ARM 架构的包。 我也试过以下链接,但没有好处。 https://code.google.com/p/ibm-db/ https://code.google.com/p/ibm-db/wiki/README 有人可以帮我解决这个问题吗? 回答1 尝试下载适用于 Raspberry Pi 的 Informix Developer Edition。 它包含引擎和客户端。 问候。

2021-09-19 04:01:22    分类:技术分享    python   sdk   arm   raspberry-pi   informix

一次只选择一组特定的行(SELECT only a certain set of rows at a time)

问题 我需要从一个表中选择数据并将其插入到另一个表中。 目前 SQL 看起来像这样: INSERT INTO A (x, y, z) SELECT x, y, z FROM B b WHERE ... 然而,SELECT 是巨大的,导致超过 200 万行,我们认为它占用了太多内存。 Informix(本例中的数据库)在查询运行时耗尽了虚拟内存。 我将如何选择和插入一组行(比如 2000)? 鉴于我认为没有任何行 ID 等。 回答1 您可以从表中执行 SELECT FIRST n *。 其中 n 是您想要的行数,比如 2000。此外,在 WHERE 子句中执行嵌入式选择,检查您要插入的表是否已存在。 这样下次运行该语句时,它就不会包含已插入的数据。 回答2 我假设您有一些脚本可以从中执行? 只要您对从嵌套选择返回的值进行排序,您就可以循环和限制。 这是一些伪代码。 total = SELECT COUNT(x) FROM B WHERE ... while (total > 0) INSERT INTO A (x, y, z) SELECT x, y, z FROM B b WHERE ... ORDER BY x LIMIT 2000 total = total - 2000 end 回答3 我几乎可以肯定,ID​​S 只允许您使用将数据返回给客户端1的 FIRST 子句

2021-09-13 19:44:42    分类:技术分享    sql   database   select   informix

Informix 上的 JPA 事务(JPA Transactions on Informix)

问题 我需要在 Java SE 7.0 环境中使用 JPA 2.0 和 EclipseLink 3.0 对表进行更新,使用非事务性 Informix DB v. 11.50,persistence.xml 是: <persistence-unit name="pp_pu" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>...</class> <class>...</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:informix-sqli://10.191.78.230:40494/ptpr:informixserver=online_ptpr"/> <property name="javax.persistence.jdbc.driver" value="com.informix.jdbc.IfxDriver"/> <property name="javax.persistence.jdbc.user" value="test"/> <property name="javax.persistence

2021-09-12 04:33:02    分类:技术分享    java   jpa   eclipselink   informix

如何计算 Informix 中返回值类型为整数的两个日期之间的差异?(How to calculate the difference between two dates with a return value type of integer in Informix?)

问题 我正在使用 Informix 数据库。 我想得到两个日期的差值,返回值的数据类型必须是整数。 SQL 看起来像: select (today - to_date('20121201','%Y%m%d')) from your_table_name 但是,当我执行 SQL 时,它返回 45,当然计算出的值不是整数类型。 值的日期类型是什么? 如何将值转换为整数? 回答1 TO_DATE 函数是 Oracle 导入,并在 Oracle 中返回 Oracle DATE 类型(因此得名),但 Oracle DATE 类型对应于 Informix DATETIME 类型。 因此,TO_DATE() 函数的 Informix 实现返回一个 DATETIME 类型。 问题 SELECT TODAY AS TODAY, TO_DATE('20121201', '%Y%m%d') AS raw_to_date, (TODAY - TO_DATE('20121201','%Y%m%d')) AS raw_difference FROM sysmaster:informix.sysdual; today raw_to_date raw_difference DATE DATETIME YEAR TO FRACTION(5) INTERVAL DAY(8) TO DAY 2013-01-16

2021-09-11 21:00:06    分类:技术分享    date   informix

没有提示指令的直接连接中的表顺序是否会影响性能?(Does the order of tables in straight joins, with no hint directives, affect performance?)

问题 所有基于 SQL 的 RDBMS'(最多 10 年的版本): 直接连接查询(没有提示指令)中的表顺序对最佳性能和内存管理有影响吗? 听说最后一个join应该是最大的表。 您的数据库的查询优化器如何处理这种情况? 回答1 只是为了增加更多关于这个主题......是和否,取决于。 这就是我的回答。 这取决于许多因素,包括您使用的 RDBMS(MySQL、MSSQL Server、Oracle、DB2...)、连接类型、表大小(也称为行数)、索引等等。 以前的答案说是和否,并呼吁在查询中使用提示。 但你的问题是: 连接语句中表的顺序是否有所不同... 在我看来,当您强制查询优化器使用您喜欢的顺序时,这会忽略查询提示的使用。 因此,重用我对您的问题的第一条评论中发布的答案,@Mark Brackett 正确指出重新排列您的连接(没有查询提示)不会影响性能,因为查询优化器仍将使用当前查询的最有效执行计划. 也许它不是最有效的,因此您可以使用提示和强制在连接上使用您想要的顺序,从而修改查询的执行计划。 关于以下链接的更多讨论:在 JOIN 子句中顺序是否重要? 优化连接方式 回答2 回答您的问题 - 是的,表格的顺序在连接中有所不同。 您还可以让优化器了解执行计划。 ORDERED 提示使 Oracle 按照它们在 FROM 子句中出现的顺序连接表。 例如,此语句将表 TAB1 连接到表

2021-09-11 05:03:05    分类:技术分享    mysql   sql   sql-server   oracle   informix

Informix 4GL 中的类型转换(Type Conversion in Informix 4GL)

问题 我想类型的变量转换VARCHAR到INTEGER ,反之亦然(即从INTEGER类型VARCHAR )Informix中的4GL。 回答1 DEFINE v VARCHAR(20) DEFINE i INTEGER LET v = "12345" LET i = v DISPLAY "i = ", i, "; v = ", v LET i = 123456 LET v = i DISPLAY "i = ", i, "; v = ", v 容易吧? 如果字符串无法转换为数字(运行时错误等),则会遇到问题。 本质上,I4GL 会在可能的情况下自动在类型之间进行转换,只有在不可能的情况下才会产生错误。 有些转换是不可能的。 例如,我认为您无法将 DECIMAL 或 INTEGER 转换为 INTERVAL YEAR TO MONTH。

2021-09-10 22:28:52    分类:技术分享    informix   4gl

Error compiling ACE report with multiple SELECT INTO statements

INFORMIX-SQL 4.10: OK, So after fixing the INTO TEMP syntax and using AS aliases, the ACE compiler complained about not having every single alias in a GROUP BY clause so I added it to each SELECT statement. However now I still get a GRAM ERR on the FORMAT statement (see updated code sample) database PAWNSHOP END define variable sfecha date variable efecha date end input prompt for sfecha using "DESDE FECHA: " prompt for efecha using "HASTA FECHA: " end output report to printer top margin 0 bottom margin 0 page length 33 left margin 0 right margin 80 end select count(*) AS rcount, pwd_trx_date

2021-09-08 20:01:06    分类:问答    sql   informix