程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Access 數據導入mysql

Access 數據導入mysql

編輯:MySQL綜合教程

從Access中提取若干信息,導入到mysql中。

 

 嗯,多簡單的事呀。。。不過是SQL語句的導入導出嘛。。。我開始真的是這麼想的。。。

 

 做的時候發現,Access沒有導出SQL的功能,不想用第三方的東西。。。

 

 這裡簡單描述下我是怎麼做的吧!

 

 1、在access中建個視圖,得到自己想要的數據;

 

 2、把這個視圖查詢到的數據,導出成文本格式,我用的是CVS;

 

 3、用文本編輯器,把導出的數據 處理成 SQL語句(多虧了vim,用其他編輯器都不知道怎麼辦才好,打開都成問題,更不用說快速編輯了。。。UE打開後,滾輪都滾不動的說。。。);

 

 4、用mysql命令,導入mysql。

 

 思路很清晰,我就這麼做了。直到最後一步,才發現問題:數據量太大(68萬條),這一步很慢很慢。

 

 慢也就罷了,只做一次(等了我近2個小時),沒什麼關系。。。可是,馬上發現,數據中時間格式不對。比如Access中是2011-1-1,而mysql這邊,期望得到的是2011-01-01,就這一個時間,要改動幾十萬條記錄,還不如重新導一份新的呢。。。

 

 於是,重復步驟2,得到數據。

 

 因為導入過程慢的實在太離譜了,就找了個mysqldump 備份出來的文件來看,看一看mysql官方覺得怎樣導入數據會更快,於是發現了諸如下面的內容:

 


Sql代碼 
LOCK TABLES `tablename` WRITE;  
ALTER TABLE `tablename` DISABLE KEYS;  
INSERT INTO `tablename` (id,name,password) VALUES   
-- 這裡是數據  
;  
ALTER TABLE `tablename`ENABLE KEYS;  
UNLOCK TABLES; 

LOCK TABLES `tablename` WRITE;
ALTER TABLE `tablename` DISABLE KEYS;
INSERT INTO `tablename` (id,name,password) VALUES
-- 這裡是數據
;
ALTER TABLE `tablename`ENABLE KEYS;
UNLOCK TABLES;
 

 很明顯,這裡的SQL從3個方面做了優化:

 

 1、加了只寫的鎖(解鎖之前,不能查詢,同時索引 可以最後做,插入數據 就會快啦);

 

 2、Disable了所有鍵(於是,就不用再做外鍵檢查了,全心插入數據);

 

 3、insert into 用一條語句完成(一條語句 和 金條語句 的性能,差別不是一般的大啊,想想也覺得是。。。)。

 

 

 這樣之後,幾分鐘就能搞定。

 

 

 另外,說一點文本處理的。。。

 

 一開始,習慣性的,要寫成一條一條的SQL,於是想到了用宏來做。宏很簡單,小數據量非常方便,不用大腦怎麼思考。但是,做了一會,發現實在太慢了,大數據量,處理不了。

 

 我平時很少寫vim腳本,現在想來,用腳本也會很慢,畢竟要一行行的執行呀。。。

 

 於是乎,寫正則,查找替換。很快,幾秒鐘搞定一次替換。正則的威力,真不是一般的強大啊。。。上面說的時間格式的轉換,也是在這裡做的。

 

 注意:即使你的文本很好看,可以試試列編輯。一般行首適用,後面 幾乎都不可用了。。。

 

 這裡要說的是,不要把多行數據變成一行,沒這個必要。變成一行後,可讀性會變的很差,文本處理會變的非常的慢。如果一行匹配的次數過多,用g這個參數,往往會很慢。。。

 

 

 就說這些吧。。。

 

 重新理了下思路。。。

 

 下次估計10分鐘就能搞定這樣的事。。。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved