Access資料庫到Mysql資料庫實時更新

2021-08-14 22:21:42 字數 2121 閱讀 7572

專案目標:

首先是將access資料庫中的大量資料(已經存好的原有百萬級資料)轉存到mysql資料庫中,然後,隨著access中資料的增加,要同步更新mysql資料庫,更新週期自定。

思路:一開始的轉存前篇部落格已經講過,這裡就忽略了,主要是實現access資料更新後同步到mysql中。思路是:

1.用max的sql語句查詢mysql資料表,找出時間那一列的最大時間max(patrol_time)

2.select出access資料表中時間大於max(patrol_time)的資料,用datareader存到reader裡面

3.用分列的方式,將讀出來最大時間大於max(patrol_time)的資料從reader中儲存到陣列中

4.建立迴圈,將陣列中的數按照對應寫入mysql中

5.將以上邏輯寫入死迴圈,設定迴圈執行的時間間隔

思路清楚了,下面直接上**,沒有什麼難的不能理解的地方:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using mysql.data.mysqlclient;

using mysql.data;

using system.data;

using system.configuration;

using system.collections;

using system.data.oledb;

using system.drawing;

using system.threading;

namespace 。。。。。。

//判斷是否有新資料需要插入

if (reader.hasrows == false)

else

,'','','','','','','','','','');", listid[i], listnumberid[i], listperson[i], listlocation[i], listpartoltime[i], listnameattrib[i], listitemname[i], listitemvalue[i], listnumber[i], listplantime[i], listequipment[i]);

mysqlcommand cmdinsert = new mysqlcommand(sqlinsert, connmysql);

cmdinsert.executenonquery();

console.writeline(sqlinsert);

}console.writeline("更新完畢");

connmysql.close();

}connaccess.close();

gc.collect();

gc.waitforpendingfinalizers();

thread.sleep(432000000);

console.readline();}}

}}

邏輯上和**上都是用的比較基礎和簡單的方法實現的,由於時間間隔比較長,所以不用考慮大量迴圈的效能問題,就直接用的陣列來存和寫。

其實稍微有點技術含量的地方就是,如何判定是否有新增加的資料。這一塊兒,核心**是這幾句:

string sql = "select max(patrol_time) from patrol_records";

mysqlcommand cmd = new mysqlcommand(sql, connmysql);

string sqlresult = cmd.executescalar().tostring();

以及:

console.writeline("開啟access資料庫成功");

string sqlaccess = "select * from lwmain where xjsj>'" + sqlresult + "'order by xjsj";

注意用大於號來比較的時候,單雙引號的使用,因為原資料要求的時間列是用的varchar型別,所以在sql語句裡,要加上單引號''

將Access資料庫移植到Oracle筆記

開始移植工作的時候,嘗試了很多自動轉換工具,包括access通過odbc匯出,csv匯入等等,發現有一些問題 例如得到字段型別轉換不能滿意,象boolean被變成char等等.後來開始自己寫轉換指令碼.1 最簡單的使用sql插入.所有的表結構通過手工定義.language vbscript code...

將Access資料庫移植到Oracle筆記

開始移植工作的時候,嘗試了很多自動轉換工具,包括access通過odbc匯出,csv匯入等等,發現有一些問題 例如得到字段型別轉換不能滿意,象boolean被變成char等等.後來開始自己寫轉換指令碼.1 最簡單的使用sql插入.所有的表結構通過手工定義.language vbscript code...

將Access資料庫移植到Oracle筆記

開始移植工作的時候,嘗試了很多自動轉換工具,包括access通過odbc匯出,csv匯入等等,發現有一些問題 例如得到字段型別轉換不能滿意,象boolean被變成char等等.後來開始自己寫轉換指令碼.1 最簡單的使用sql插入.所有的表結構通過手工定義.language vbscript code...