我需要將某些表從MySQL遷移到mongoDB。搜索完網頁後,對我來說,它看起來像是一個MySQL導出到CSV,並且從CSV導入到mongoDB應該是最快和最簡單的方法。從MySQL遷移到mongo的空值
我使用該查詢的出口MySQL的:
select * into outfile '/tmp/feed.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ''
from feeds;
但有一個問題。
如果MySQL字段是NULL
,那麼MySQL導出會將\N
(或\\N
)寫入CSV文件。 通過導入該文件,mongoDB以字符串形式導入\\N
而不是NULL
值。
mongoDB導入選項--ignoreBlanks
將不起作用,因爲mongoDB的觀點,\\N
不是「空白」。
所以我的問題:
1)我怎麼能避免出口NULL
爲\\N
?
或
2)如何mongodbimport
讀/解釋\\N
作爲NULL
或空值?
順便說一句:這不是進行後處理CSV文件中搜索並替換\\N
論1.可能的答案)可能是select語句的修改選項:SELECT IFNULL(field1, "")
但在這種情況下,我不得不定義並檢查每一列。如果所有列都在select語句中定義,則導出腳本不會如此靈活。
//編輯:同時與進口玩弄< - >出口我發現另一個問題:日期字段,這也解釋爲字符串從mongoimport
* 「順便說一句:這不是進行後處理CSV文件中搜索並替換\\爲N的選項」 * - >爲什麼? – Philipp
我認爲,如果你使用'sed','awk'或者帶有正則表達式的php腳本來處理大量帶有「未知」文本的大文本文件,那麼它就不那麼容易出錯或者不健壯。 –
如果你只是這樣做一次,採取最簡單的方法,並按建議手動修復數據。如果這是一件常規的事情,那麼將整個過程自動化。 Mongoimport有限。你可以導出爲Json嗎? – WiredPrairie