September 24th, 2014
前言: 之前提過買了NAS之後,先把所有的照片全部傳到NAS上面.接下來就要去面對令人不想管的事情.把接近兩百個類別,數萬張的相片名稱與資訊弄出來.
因為我以前的相簿使用的是4images,這是一套挺簡單的PHP相簿.
為了要把4image相簿裡面的資料弄出來.. 想弄個Go MySQL結果Oracle 密碼搞半天~下載個MySQL解開還要6XXMB? 靠~決定換MariaDB 反正在Go上面的Driver都一樣…. 但是似乎發生了一些難以解決得問題. 所以最後使用C#來完成EXIF寫入的動作.
不過似乎最後遇到一些在Windows上面的問題,至於為什麼要用Windows是因為我找到了一個可以修改EXIF的小工具,而他有Windows的.
流程:
先試著把資料庫弄出來到Mac上面
- 安裝 MariaDB (參考這裡)
- brew install mariadb
- mysql_install_db
- mysqld_safe –datadir=’/usr/local/var/mysql’
- 修改密碼 mysqladmin -u root password ‘PASSWORD’
- 把資料匯入
- mysql -uroot -p DB_NAME —force < File_NAME
- 關於Golang 針對MariaDB的部分
到這裡先決定暫停Golang與MySQL的工作,先專注把資料弄出來:
- 最後決定先用PHP把資料匯出,然後把東西放在個別資料夾:
- 類別名稱與敘述放成檔案 FOLDER_NAME.txt FOLDER_DESC.txt
- 相片裡面的敘述跟標題放在 pic_NAME.txt pic_DESC.txt
- 程式放在 4image PHP Dumptool
接下來就要寫一個工具把在文字檔案裡面的EXIF資訊寫回相片本身的EXIF,由於沒有比較好的Go-EXIF工具.這裡我找到的事Exiftool.它是一套Perl寫的工具,本身可以跨平台.而且看起來功能還挺不賴的.
- 所以要使用Golang 去寫一個Windows 下面裡用command line 操控Exiftool來修改相片的EXIF
- 這裡又遇到一個問題是,不知道為什麼在Windows下面裡用Golang使用command line 執行的parameter都會多一個 “
- 有在Stackoverflow上面詢問,不過其他人都遇不到這樣的問題?
- 先停住,改成用C#來寫寫看
- 使用C# 來寫就快多了,大概幾個小時就兜出solution並且可以處理幾萬張照片.不過有幾個東西需要記錄.
- 需要有短暫的sleep不然太快會讓command line tool failed.
- 這個工具也放出來,搭配PHP工具一起使用才能正常作用喔..
參考:
- MariaDB (MySQL) installation guide
- https://mariadb.com/kb/en/mariadb/documentation/getting-started/compiling-mariadb-from-source/building-mariadb-on-mac-os-x-using-homebrew/#installing-mariadb
- How to import SQL to MySQL
- http://stackoverflow.com/questions/17666249/how-to-import-a-sql-file-using-the-command-line-in-mysql
- How to connect MariaDB via Go
- https://mariadb.com/blog/using-go-mariadb
- PhpMyAdmin 瀏覽資料庫內容會呈現亂碼的解決方法
- http://visdacom.com/Website_Design/index.php?load=read&id=28
- http://forum.serverzoo.com/showthread.php?t=2416
- http://www.chou-it.com/info/infra/db/mysql_01.html