iT邦幫忙

0

如何將mongoDB no SQL 轉到SQL資料庫??

各位大大好,因為公司軟體是使用MongoDB 資料庫,最近在測試想將資料庫轉至MySQL,我的系統是使用windows 10,以下是我參考的資料來源
https://docs.mongodb.com/bi-connector/master/?_ga=2.20534139.251537211.1508857535-1482409880.1503640145&_gac=1.28294478.1508857535.Cj0KCQjwybvPBRDBARIsAA7T2kirihKMwjY_9kZqKicwC0gFgNFJ-aY83jfXPpCxKbKlGxazlALPb3gaAu11EALw_wcB

現在到要結連SQL資料庫時,一直發生錯誤,目前執行到以下畫面
https://docs.mongodb.com/bi-connector/master/reference/auth-plugin-c/

我的登入帳號是fanuc,資料庫是MTLINKi
我這樣打正確嗎???
mysql '--user=fanuc?source=MTLINKi&mechanism=SCRAM-SHA-1' --default-auth=mongosql_auth --plugin-dir=/usr/bin/mysql/plugins -p

因為他直接產生以下錯誤訊息
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
'mechanism' 不是內部或外部命令、可執行的程式或批次檔。

如果我改成
mysql '--user=fanuc?source=MTLINKi' --default-auth=mongosql_auth --plugin-dir=/usr/bin/mysql/plugins -p

可以直行到登入密碼後產生以下錯誤訊息
ERROR 2059 (HY000): Authentication plugin 'mongosql_auth' cannot be loaded: §ä¤£¨ì«ü©wªº¼Ò²Õ¡C

我又修改了一下plugin dir後,並將mongo_auth.dll檔案放置C槽/usr之下
mysql '--user=fanuc?source=MTLINKi' --default-auth=mongosql_auth --plugin-dir=/usr -p

錯誤碼又改了
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES)

現在卡在這裡,有高手可以幫我解答嗎??

2 個回答

0
做工仔人!
iT邦高手 1 級 ‧ 2017-10-25 10:25:28

事先聲明:這二個種資料庫我都不熟.(應該說:不懂)
但是我不是來賺點數的.是來提供"除錯方向"
樓主:希望在MYSQL中可以連結到mongoDB資料庫.
先決條件:myql要先能"登入"到mongoDB.=>就要用mongoDB的帳號及密碼來登入,而不是用mysql的帳密來登入.
可以登入才能依權限使用mongoDB中的資料庫.
以MS-SQL 與Oracle 資料庫為例.希望MS-SQL能連接到Oracle資料庫.就要先在MS-SQL中建立一個LINK SERVER方式連接到Oracle(當連結成功後,就可以看到Oracle資料庫中的table 及view) .

以上供樓主參考.

0
bizpro
iT邦大師 1 級 ‧ 2017-10-25 11:18:51

三次錯誤中, 中間的錯誤您已修正了. 前後兩次都是Access denied for user 'ODBC'@'localhost' , 這表示密碼錯誤. 問題是:
'ODBC'@'localhost'是MySQL在Windows平台下的預設使用者, 由於您只使用-p參數, Windows下的MySQL就自動使用-u ODBC了, 因此, 您必須給予'ODBC'@'localhost'的正確密碼, 或建立一個專用的使用者及其密碼.

關於資料轉移, 也可以先從mongodb倒出資料為csv格式:
https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
再倒入mysql:
https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

lichang iT邦新手 5 級 ‧ 2017-10-25 12:00:46 檢舉

謝謝大大們的指點
以下是我的疑問,請問--user是否等於-u,登入帳號的意思,還是他有別的意思呢?

另外一點,因為我的資料庫內容會一直變動,所以用匯出再匯入方式不太適合我的目的,但請問一下,我現在測試用轉到Mysql方式算即時取樣,還是也是手動取樣呢?

bizpro iT邦大師 1 級 ‧ 2017-10-25 12:57:35 檢舉

-u <username> 和 --user=<username>是一樣的, 這是Unix/Linux的習慣.

如果一直變動, 要看異動頻率, 也許您試的mongodb官方的插件是一個方法, 先解決密碼問題.
如果是在Linux, 我就寫腳本定時執行, 您使用Windows,應該可以使用Powershell定時執行.
google: powershell mongodb to mysql:

https://www.cdata.com/kb/tech/mongodb-powershell-replicate.rst

https://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwjko8e-_YrXAhWMnpQKHeBIA1UQFgg5MAE&url=http%3A%2F%2Fwww.techtrek.io%2Fconnecting-powershell-to-mysql-database%2F&usg=AOvVaw0uMj0ReI_AQNemI8othW2K
...

lichang iT邦新手 5 級 ‧ 2017-10-25 19:55:39 檢舉

謝謝大大指點,我現在改成
mysql mtlinki --default-auth=mongosql_auth --plugin-dir=/tests/ -p -u root
確實可以進去mysql>
但是這樣算C Authenctication Plugin 啟用了嗎??(有點搞不清楚,這一個步驟的用意在哪裡??)

接下來,我是應該要回到前一頁的步驟2.Generate your schema definition file 繼續操作的意思嗎??

我要發表回答

立即登入回答