写入 SQL 数据库<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP 中的 SQL 连接非常适合读取数据 - 有人用它来写入数据吗?
我有一个存储过程,它收集数据并将其写入新表。 它使用第二个表来读取参数列表,以便知道要收集哪些数据。 我可以使用 JMP 读取此表,但写入它远非易事:
- 文本列保存为带有尾随空格的 JMP nvarchar - 这需要空格修剪功能才能使用上传的文本列
- 日期下载正确,但如果您尝试将它们写入日期,则 OBDC 驱动程序会抛出错误。 您可以通过首先将列转换为文本格式,然后在使用时转换回来来解决这个问题,但这相当烦人。
目前,我使用存储过程将正确的数据从 JMP 创建的表复制到主表,这间接克服了限制。
我的问题是有没有更好的方法来一起使用 JSL/SQL 来读取表、添加新行,然后将更改/修改写回服务器?
回复:写入 SQL 数据库谢谢@vince_faller
我已经使用了它,并且还设法通过循环运行它来扩展它。由于某种原因,我一次只能读取 35K 行,所以我只是做了一个 for 循环来一次读取 25K 行并将它们输入数据库。
回复:写入 SQL 数据库你好,
感谢您的分享。
以下是我的案例,感谢您的帮助。
1.服务器中的sql数据库名称:SQL_machine_yield_db
从数据库连接获取更新时附加 SQL_machine_yield_db.jmp。
2.在db中,有8列
3.表“new_and_update_yield.jmp”中的数据
问题:如何使用jsl/sql将服务器中的new_and_yield.jmp更新为SQL_machine_yield_db?
此致
回复:写入 SQL 数据库我假设您正在使用某些 WHERE 语句查询数据表的内容,而不仅仅是提取整个表?
如果你碰巧拉了整张桌子,
dt << 保存数据库(数据库,
“dbo.假”,
代替
);
会工作。 否则不要这样做。因为它将删除表中不在 JMP 查询中的所有信息。 我认为这是 JMP 12+ 中的?
如果没有,您可以将其拆分为是否有 ID。如果有ID则进行更新,如果没有则进行插入。不过,最好锁定并隐藏 ID 列。我只是在这里吐口水,但我认为它应该有效。
回复:写入 SQL 数据库我感觉您希望在对 JMP 表进行编辑时让数据库“自动更新”(因此没有“更新”按钮)。 您可以使用“Subscribe()”来完成此操作。 有关示例,请参阅“帮助 > 脚本索引”。
回复:写入 SQL 数据库谢谢你的例子。 我知道我可以编写原始 SQL 并执行它,例如 INSERT、UPDATE 和 REPLACE,或者运行存储过程并向其传递参数。 我正在寻找示例 SQL/JSL,用户可以在其中打开 JMP 中的现有数据库表。 对于最终用户来说,它似乎只是存储在远程计算机上的 JMP 表。 不同之处在于,他们对该 JMP 表所做的任何更改都可以上传到原始数据库。
我现在可以看到如何编写 JSL 代码来检查是否已将新行添加到表中,然后使用 INSERT INTO 将它们写入数据库(前提是可以控制数据类型不匹配)。 有什么想法如何跟踪对现有行的编辑吗?
回复:写入 SQL 数据库这对我来说效果很好。我可能误解了你的问题。
数据库=创建数据库连接( “DRIVER=SQL SERVER;SERVER=fake_database;数据库=Test_DB” );
sql返回=执行SQL (数据库,
“插入[Test_DB]。[dbo]。[假]
价值观
('测试SQL插入'
,1
,1
,'JMP'
,14.14
,14.14
,1
,'JMP'
,'JMP'
,'JMP'
,14
,14
)”
);
关闭数据库连接(数据库);

我认为您的日期问题是因为 JMP 实际上将日期存储为秒。您可以在 JMP 中对日期执行 MDYHMS(),也可以在 SQL 中执行 date add(JMPdate, s, '1-1-1970')。
您还可以提供更多信息吗?我可以提取数据并向 JMP 表添加行,然后更新 SQL 表,但如果没有上下文,我将跳过数据提取并直接在 SQL 中插入(或者让 SQL 进行添加并完全将 JMP 排除在外)。
回复:写入 SQL 数据库抱歉,我无能为力,我对这个主题完全是新手,但我也很感激任何人对写入数据库的反馈。