我們公司有一個資料庫A
另外有一個外來的excel試算表B
假設我把excel的資料欄位名稱改成跟A一樣
我要如何依身份證號查詢A資料庫,倘若B資料庫=A資料庫的身份證相同
就把B資料庫那筆的值寫入A資料庫
反之倘若B資料庫的身份證號不等於A資料庫的身份證
就在A資料庫新增一筆資料,並把B資料庫該筆內容值寫入A資料庫
不知MS-SQL是否能作到?
或是ASP可以作到嗎?
假設原有 TABLE_A 身份證欄位為 ITID 1.將Excel匯入成 TABLE_B 2.刪掉 TABLE_A 中與 TABLE_B 身份證相同的資料 DELETE TABLE_A FROM TABLE_A A INNER JOIN TABLE_B B ON B.ITID = A.ITID 3.將整個 TABLE_B 倒進 TABLE_A SELECT * INTO TABLE_A FROM TABLE_B 4.刪掉 TABLE_B DROP TABLE TABLE_B
jawtair提到:
倘若B資料庫=A資料庫的身份證相同
就把B資料庫那筆的值寫入A資料庫
jawtair提到:
倘若B資料庫=A資料庫的身份證相同
就把B資料庫那筆的值寫入A資料庫
2.主資料庫約15000筆, excel約1000多筆
假設1000多筆裡有300筆在15000筆中找得到,700筆找不到
答案的標準解法是
下300個UPDATE, 700個INSERT, 最後是15,700筆
而我的做法是
下300個DELETE, 1000個INSERT,最後也是15,700筆
如此而已
antijava提到:
標準解法是
下300個UPDATE, 700個INSERT, 最後是15,700筆
而我的做法是
下300個DELETE, 1000個INSERT,最後也是15,700筆
tecksin提到:
砍掉重練
要問一下樓主:
1.這個匯入資料作業是一次性需求?還是以後有可能變成定期日常作業?
2.資料庫資料筆數及Excel資料筆數各是多少?
3.使用者是否可接受資料庫暫時離線?
會問這些是因為需求不同,作法就不同,所花的成本也不同!
謝謝您的回覆,茲就問回覆如下:
1.不定期作業, 最少一年有一次
2.主資料庫約15000筆, excel約1000多筆
3.可接受暫時離線
附註:我不是寫程式的,管理屬於打雜的,會一點簡單的MS-SQL指令,現在公司有這樣的需求,要我想辦法解決,因為不止一種資料庫「會員名單、機構名錄(例似工商名錄)」,所以我需要徹底了解,才能依同樣的作法去弄另一個資料匯整。
如果我是樓主,我會這樣作:
1.請程式設計師或自己試著寫一隻資料匯入程式
2.匯入程式需能自定義Excel欄位與資料庫欄位Mapping
3.匯入前先讓使用者預覽要匯入的資料
4.匯入後要讓使用者檢視每一筆資料是否成功匯入,若失敗需顯示錯誤訊息
3.製作詳細操作步驟的使用手冊
4.交付使用者,以後讓使用者自己作匯入動作
樓上deanya大建議用DTS的確是一個好作法,拿到一個新的檔案到匯入完成應該大約30分鐘就完成(包含改欄位名稱,資料調整),但我認為既然是重覆性工作,就應該讓使用者在不須IT介入下就可以完成,不然事情愈壓愈多,怎麼作的完。當然您也可以將DTS的操作步驟作成手冊教使用者操作,但DTS匯入失敗的說明實在不夠清楚,到最後使用者還是會找您幫忙處理!
一般這樣的程式不知報價會是多少錢?
最土法煉鋼的方式:
謝謝您的回覆, 但還是不了解您的意思,我再說一下好了
jawtair提到:
自動新增一筆, 並將B資料庫值寫入
小朋友出大題目
大朋友出小題目
這是 ...
INSERT INTO B_Table
SELECT * FROM A_Table
好像有一點亮光, 是否
INSERT INTO B_Table
SELECT * FROM A_Table
下面要加 WHERE
我寫了一篇 如何在 SQL Server 內針對 Excel 做查詢
可以參考一下~ XD
http://www.dotblogs.com.tw/dean/archive/2013/01/11/87154.aspx