直接這樣寫 insert targettable SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\XXX.mdb';'admin';'mypwd', sourcetable) AS a 直接在程序中執行sql
如果是本地的话就用这个可以 insert targettable SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\XXX.mdb';'admin';'mypwd', sourcetable) AS a 不过如果mdb文件在其他机子上的话就不行了
To w_rose(w_rose) :组合x条记录成一个串,然后发一次更新語句 -- 真是奇想,不過試驗如下: 在相同條件下寫5000多條記錄,所用時間(秒): x time 1 45 2 62 5 78 10 48 20 52 50 53 100 62 200 52 500 119 1000 199 可見,並不是組合多就能節省時間.
to yone(yone) , yoki(小马哥) : 類似 “insert targettable SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\XXX.mdb';'admin';'mypwd', sourcetable) AS a ” 對於全部覆蓋或者全部新增應該說是有效的,對於不規則離散更新還不行,簡單條件更新應該可以. 例如: 要把TableA表更新到TableB表,TableA,TableB表有共同的主鍵字段(FK1,FK2),除了主鍵字段和條件判斷字段FDT(DateTime型)是可知的,還有系列資料字段(FV1,FV2,FV3,...,FVk)並不固定,但對於程式是可以組合出字段名表的(資料字段就當作只有FV1,FV2,FV3).TableA,TableB有部分記錄主鍵相同,資料內容可能不同. 要求把TableA表的FDT較大的(較新的)記錄,以及TableB中不存在的記錄,從TableA添加或者更新到TableB中,求解復合SQL語句,謝謝!
UPDATE B SET B.FV1=A.FV,B.FV2=A.FV,B.FV3=A.FV,B.FDT=A.FDT FROM TableB AS B LEFT JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\XXX.mdb';'admin';'mypwd', TableA) AS A ON (B.FK1=A.FK1)AND(B.FK2=A.FK2) WHERE A.FDT>B.FDT;INSERT INTO TableB SELECT A.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\XXX.mdb';'admin';'mypwd', TableA) AS A LEFT JOIN TableB AS B ON (B.FK1=A.FK1)AND(B.FK2=A.FK2) WHERE B.FK1 IS NULL; 沒試過,不知道型不行.
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\XXX.mdb';'admin';'mypwd', sourcetable)
AS a 直接在程序中執行sql
insert targettable SELECT a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\XXX.mdb';'admin';'mypwd', sourcetable)
AS a 不过如果mdb文件在其他机子上的话就不行了
在相同條件下寫5000多條記錄,所用時間(秒):
x time
1 45
2 62
5 78
10 48
20 52
50 53
100 62
200 52
500 119
1000 199
可見,並不是組合多就能節省時間.
“insert targettable SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\XXX.mdb';'admin';'mypwd', sourcetable) AS a ”
對於全部覆蓋或者全部新增應該說是有效的,對於不規則離散更新還不行,簡單條件更新應該可以.
例如:
要把TableA表更新到TableB表,TableA,TableB表有共同的主鍵字段(FK1,FK2),除了主鍵字段和條件判斷字段FDT(DateTime型)是可知的,還有系列資料字段(FV1,FV2,FV3,...,FVk)並不固定,但對於程式是可以組合出字段名表的(資料字段就當作只有FV1,FV2,FV3).TableA,TableB有部分記錄主鍵相同,資料內容可能不同.
要求把TableA表的FDT較大的(較新的)記錄,以及TableB中不存在的記錄,從TableA添加或者更新到TableB中,求解復合SQL語句,謝謝!
B.FV1=A.FV,B.FV2=A.FV,B.FV3=A.FV,B.FDT=A.FDT
FROM TableB AS B LEFT JOIN
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\XXX.mdb';'admin';'mypwd', TableA)
AS A ON (B.FK1=A.FK1)AND(B.FK2=A.FK2)
WHERE A.FDT>B.FDT;INSERT INTO TableB
SELECT A.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\XXX.mdb';'admin';'mypwd', TableA)
AS A LEFT JOIN TableB AS B ON (B.FK1=A.FK1)AND(B.FK2=A.FK2)
WHERE B.FK1 IS NULL;
沒試過,不知道型不行.