寫入 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 數據庫抱歉,我無能為力,我對這個主題完全是新手,但我也很感激任何人對寫入數據庫的反饋。