如何使用資料庫腳本中的新資料附加舊資料表大家好,
我有一個靜態 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」函數與其他表一起使用。
請嘗試一下,並告訴我是否可以讓它為您工作。