如何使用数据库脚本中的新数据附加旧数据表大家好,
我有一个静态 JMP 数据表,其中包含旧的历史信息(旧数据)。
我有另一个包含新数据的 JMP 数据表。 该表通过 JMP 数据库查询从数据库提供。 这也意味着 JMP 自动为我提供了一个很好的脚本,允许我每次运行它时从数据库更新表。
现在我想在旧表中附加从数据库中提取的新数据,显然不会丢失旧数据。 可能需要 JSL,但我自己无法弄清楚。
任何帮助都很高兴,
非常感谢
盖伊
回复:如何使用数据库脚本中的新数据附加旧数据表完美的!回复:如何使用数据库脚本中的新数据附加旧数据表是的! 现在它按预期工作了! 谢谢哈德利!
回复:如何使用数据库脚本中的新数据附加旧数据表你好,
我有另一个我认为可能有效的解决方案。连接函数返回到附加到第一个表 (dt1),但现在创建一个源列来跟踪哪些行在 dt1 中以及哪些行是从 dt2 附加的。 “Onruncomplete”现在获取表 dt2 的名称,然后查找“:Source table”列,选择并删除“dt2”行。然后它删除“:Source table”。请尝试一下并告诉我这是否有效。
query<<RUN></RUN>
回复:如何使用数据库脚本中的新数据附加旧数据表谢谢哈德利。
我只是将整个命令添加到脚本末尾,将 dt 更改为 dt1(尽管我认为这根本不重要),保存并运行它。 该脚本仍然运行,没有错误或警报消息,但是当我第二次运行它时,重复项不断被添加。
回复:如何使用数据库脚本中的新数据附加旧数据表你好,我们又见面了,
再想一想,在将 dt2 附加到 dt1 后,您总是可以添加一个命令来从 dt1 中删除重复的行。这可能会解决您遇到的第二个问题。根据条件选择并删除重复行
回复:如何使用数据库脚本中的新数据附加旧数据表你好,
将 Close() 函数添加到 onruncomplete 脚本将使 dt2 打开和关闭得如此之快,以至于用户不会知道它发生了:
query<<RUN></RUN>
请注意,我还从连接函数中删除了“附加到第一个表”语句。这将创建一个单独的表并保持 dt1 不变。这与您建议的解决方法一致(顺便说一句,好主意!)。可能有一种简单的方法来检查两个表的每一行并仅附加 dt2 特有的行,但我想不出它。也许其他人有建议?
回复:如何使用数据库脚本中的新数据附加旧数据表是的,这确实有效,它被附加了。 仍然剩下两个问题:
1)一个小问题是dt2表仍然单独弹出,这是不需要的。
我试图通过更改脚本来避免这种情况,如下所示,但结果是相同的:
queryname << Run( onruncomplete( dt1 << Concatenate( dt2 = queryResult, Append to first table ) ) );
代替
queryname << Run(
onruncomplete(
dt2 = queryResult;
dt1 << Concatenate( dt2, Append to first table );
)
);
2) 一个更大的问题是,当第二次运行脚本时,相同的数据会再次附加到 dt1 的末尾。 我需要某种仅导入任何新数据的规则。 不确定这是否可以在脚本的连接部分完成。
如果没有解决方法,作为 B 计划,我们还可以尝试修改脚本,使其将附加表 (dt1 + dt2) 作为单独的表吐出。 这样,dt1 始终可以用作未来数据更新的基础。
回复:如何使用数据库脚本中的新数据附加旧数据表你好,我们又见面了,
好吧,我想我有一个解决方案。 正如您从下面的脚本中看到的,我已将 Concatenate 函数添加到“onruncomplete”消息的内部。如果将其保存为表脚本到 dt1,则应该可以工作。请尝试一下并告诉我。
dt1=Current Data Table();
query=New SQLQuery (...
);
query<<RUN></RUN>
回复:如何使用数据库脚本中的新数据附加旧数据表嗨哈德利,
我想我们很接近...
我想我按照您的建议执行了所有操作,但是当我打开 dt1 并从那里运行脚本时,我收到此 JMP 警报消息:
名称未解析:dt2 正在访问或评估“dt2”,dt2/*###*/
不久之后,dt2 数据表弹出。 但它没有附加到 dt1 中。
有趣的是,当我关闭此 dt2 并尝试再次从 dt1 运行脚本时,我不再收到 JMP 警报消息,但现在弹出连接窗口,不久后 dt2 再次弹出。 dt2 仍然没有附加到 dt1 上。
问候
盖伊
回复:如何使用数据库脚本中的新数据附加旧数据表你好,
我认为我们可以通过以下方式简化:我们将 dt1 称为保存在桌面上的表,并将 dt2 称为我们要从数据库更新的新表。我们将为表 dt1 创建一个新的表脚本,该脚本为 dt2 创建查询,然后将 dt1 和 dt2 连接在一起,将结果附加到 dt1。
dt1=Current data table();<BR /><BR />queryname=New SQL Query(...<BR />...);<BR /><BR /><SPAN>queryname<<RUN></RUN><BR />dt1<<CONCATENATE><BR /></CONCATENATE></SPAN>
要回答您的第一个问题,您可以通过运行查询,然后右键单击源脚本,将结果保存到剪贴板,然后将其粘贴到新脚本窗口中,从 dt2 获取新 SQL 查询脚本。然后,您可以使用该窗口处理脚本,然后将其保存到 dt1 中的新表脚本。
这有帮助吗?
回复:如何使用数据库脚本中的新数据附加旧数据表嗨哈德利,
我还不明白所有步骤。
1) 运行查询并保存源脚本,为查询指定一个新名称:queryname = New SQL Query(...)<
=>“保存源脚本”,您的意思是我只需编辑表中的现有查询并将其保存在那里? 或者将其作为新脚本添加到我的表中? 或者将这个新脚本保存在其他地方?
4) 将对 dt 的引用与“Concatenate”函数与其他表一起使用。
=> 恐怕这需要更多澄清
提前感谢哈德利!
盖伊
回复:如何使用数据库脚本中的新数据附加旧数据表嗨,盖伊,
当运行SQL查询(New SQL Query(...))时,您可以通过以下方法获取对数据表的引用:
1)运行查询并保存源脚本,为查询指定一个新名称:queryname = New SQL Query(...)<
2)删除查询后的<
3)在下面添加一行脚本:queryname<
4) 将对 dt 的引用与“Concatenate”函数与其他表一起使用。
请尝试一下,并告诉我是否可以让它为您工作。