2010年5月17日我在日志中寫了一篇《導入大量名錄數據到MediaWiki網站的例子》,詳細記錄了導入數據的過程步驟,後面進行了不少導入工作,也都是基本上按照那個步驟來的。
前段時間在國外的空間中安裝了Drupal以及一些模塊,進行了數據導入的嘗試工作,這個月又在國内的服務器上設置了Drupal平台的新站jamesqi.com和adsensebook.cn,明年初将會開始導入大量數據的工作。這幾天還在讓技術部的同事幫忙修改php模闆來實現一些功能。為了讓自己後面的工作更清晰,也将過程記錄如下:
1 導入前
1.1 搭建安裝
先架設好網站,安裝Drupal軟件及需要的模塊,讓網址可以訪問。
一般安裝以下的模塊:
- 核心模塊
- 核心可選模塊
- pathauto: 自動生成路徑别名
- token: 被其他模塊調用
- cck: 自定義字段
- views: 視圖(暫未用)
- xmlsitemap: 生成sitemap提交給搜索引擎
- boost: 文件緩存
- node import: 導入txt, csv文件到頁面
- contemplate: cck輸出模闆
- taxonomy import/export via xml: 導出、導入分類(暫未用)
- taxonomy menu: 用戶生成分類菜單
- taxonomy manager: 用于分類管理、批量增加
- page title: 自定義頁面标題
另外有幾個方便管理和編輯的模塊,也可以根據需要安裝:
- admin_menu: 管理菜單
- ckeditor(暫未用)
- imce(暫未用)
- imce_wysiwyg(暫未用)
- wysiwyg(暫未用)
- capcha: 驗證碼
- external links: 判斷處理外部鍊接
- Devel: 開發調試
如果是導入一系列的數據做網站群,可以隻安裝一套Drupal系統,采用多網站共享的安裝方式。如果是站群,可以考慮這幾個方面:
- 一組類似的子站群隻需要安裝一套Drupal程序以及模塊
- 一組類似的子站群建議使用同一MySQL服務器中不同的數據庫,特别是數據量非常大的時候,便于分别備份等操作
- 用戶帳号、密碼共享的問題,待解決
1.2 初始設置
安裝完成後進行基本的設置,例如:
- 站點信息設置,包括名稱、口号、使命、頁腳、首頁等設置;
- 站點主題選擇,以及顔色、logo、favicon.ico等設置;
- 區塊設置,嵌入Google DFP, Analytics等代碼;
- 角色添加、權限設置;
- 留言設置,驗證碼方式設置;
- 在線聯絡提交郵件的分類設置、外部SMTP設置。
另外,每種添加的新模塊都需要設置權限以及設置配置,例如:
- autopath: 路徑别名自動生成的規則;
- pagetitle: 各種類型頁面的标題構成規則;
- boost: 緩存的各種設置;
- xmlsitemap: 生成sitemap的規則。
1.3 準備數據
- 從.mdb的Aceess文件(或者.xls的Execl文件)導出文本文件,注意字段間隔用制表符;
- 如果有需要修改的地方,可以批量修改替換;
- 注意編輯保存為UTF-8字符形式,以免漢字不被Drupal識别;
- 在Drupal中新建内容類型,例如:機器可讀名稱“minglu”,人類可讀名稱“名錄”;
- 在Drupal中的CCK模塊設置新的字段,例如:公司名稱、公司類型、法定代表人等,可全部用text類型字段,可以先手工新建内容類型,然後導入從其他站導出的相同結構字段列表;
- 在Drupal中設置需要的Taxonomy詞彙表和術語,可用Taxonomy Import/Export via XML批量導入或者用Taxonomy Manager批量添加。
2 導入中
2.1 導入實驗
可先用少量數據來做導入實驗,例如10條、100條數據,隻需要很短時間可以完成導入,檢查是否有報錯、字段設置是否合理等。
2.2 正式導入
在Drupal後台用node import來導入.cvs或者.txt數據,第一行為标題,還要設置标題對應的CCK字段,然後開始導入。如果數據量大,例如10萬條、100萬條數據,需要較長時間完成,實測大約1秒5條左右。
3 導入後
3.1 内部工作
- 修改字段設置、顯示設置、字段權限;
- 修改Content Template,達到需要的變換效果;
- 編寫php程序來更新node_term表,将頁面進行歸類;
- 生成taxonomy菜單,添加主鍊接菜單等其它菜單項;
- 如果需要,修改node.tpl.php和garland.info來添加新區域(Region)來放置區塊(Block);
- 如果需要,模拟蜘蛛爬去,提前批量生成緩存文件;
- 檢查内部搜索,批量生成文本索引。
3.2 外部工作
- 修改robots.txt,包含提交sitemap的鍊接,允許訪問“/分類”開頭的頁面,禁止不需要訪問的頁面;
- 修改sitemap的設置,定期自動生成網站地圖;
- 在www.google.com/webmastertools中添加該網站;
- 在www.google.com/adsense中添加URL渠道來跟蹤收入;
- 在www.google.com/analytics中添加配置來跟蹤流量;
- 服務器crontab設置,定期執行cron。
筆記先做到這裡,有新遇到的問題再回頭來補充修改。
评论6
很好,受益
很好,受益Drupal 7搭建稍有不同
我整理成這樣幾步:
其中粗體字的幾個步驟比較麻煩,需要人工花費較多時間精力,其它部分可以盡量多用drush來批量處理。
我在Drupal 7與Drupal 6導入過程中最大的區别是用的導入模塊不一樣,Drupal 7下的Feeds有兩個大的優點:
對于術語字段可以自動分類(所以需要先建術語表、再設置内容類型中對應的字段、再在Feeds map中設置導入數據的對應),不需要導入後運行自己寫的PHP程序來歸類;
新增導入内容更新功能,用了GUID字段,避免重複導入。
怎麼使用導入内容更新功能
新增導入内容更新功能,用了GUID字段,避免重複導入。 這個功能是怎麼實現更新的,試了很多次也沒摸索出來,求大神指教Feeds導入内容避免重複很容易啊
Feeds導入内容避免重複很容易啊,你添加了GUID字段是對的,在做字段映射mapping的時候,将GUID設置成Used as unique,再就是“Node processor 的設置”中每個選項的意思都看明白、不選錯就可以。
drupal8中,怎麼導入大量用戶
drupal8中,怎麼導入大量用戶,而不是管理員一個個手動注冊建議調用API來實現
我查了一下,drupal 7裡面導入頁面或者用戶的模塊https://www.drupal.org/project/feeds 目前還沒有推出drupal 8的版本,我建議自己查看drupal 8的API文檔,通過編程調用API的方式來批量添加,雖然不如安裝一個模塊用起來方便,但至少這是一種可行的辦法。