国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

以文本形式將MySql數(shù)據(jù)遷移Mongodb的方法

IT那活兒 / 3458人閱讀
以文本形式將MySql數(shù)據(jù)遷移Mongodb的方法

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!

數(shù)據(jù)遷移是DBA的一類常見工作,如果是相同數(shù)據(jù)庫產(chǎn)品之間的數(shù)據(jù)遷移,因?yàn)楦鱾€(gè)DBMS都提供了遷移的工具,所以是一個(gè)比較簡(jiǎn)單的事情。但是現(xiàn)在各種開源數(shù)據(jù)庫產(chǎn)品大行其道,也經(jīng)常出現(xiàn)跨DBMS的數(shù)據(jù)遷移需求,此時(shí)就得想各種方法來實(shí)現(xiàn)跨庫遷移最常見的就是ETL工具或者以文本的形式導(dǎo)出和導(dǎo)入
在本文中,筆者將簡(jiǎn)單介紹MySql數(shù)據(jù)庫以文本的形式導(dǎo)出導(dǎo)入到Mongodb的方法。MySql數(shù)據(jù)庫是一種關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)在表中是以行列的形式存儲(chǔ),而Mongodb是一種非關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)是以Json文檔的形式存儲(chǔ)。
兩種數(shù)據(jù)庫都提供了導(dǎo)入導(dǎo)出文本的工具,都支持CSV、TSV等格式的導(dǎo)入導(dǎo)出,Mysql是mysqldump,mongodb導(dǎo)入使用mongoimport,所以整個(gè)過程也比較簡(jiǎn)單,只是有些細(xì)節(jié)需要注意。
使用mysqldump導(dǎo)出CSV或者TSV格式,比較常見,此時(shí)暫不做討論,由于Mongodb數(shù)據(jù)是以Json文檔來存儲(chǔ),在表級(jí)并沒有表結(jié)構(gòu)定義的概念,但是每個(gè)Json文檔的字段都有類型,且同為文本類型,字段長(zhǎng)度也不一致,時(shí)間類型也不同,在Mongodb中是ISODate,所以使用mongoimport導(dǎo)入時(shí),需指定每個(gè)字段的類型。所以可以按照下表進(jìn)行Mysql和Mongodb之間的字段類型轉(zhuǎn)換導(dǎo)入
序號(hào)
Mysql數(shù)據(jù)類型
mongoimport數(shù)據(jù)類型
1
tinyint
int32()
2
smallint
int32()
3
mediumint
int32()
4
integer
int32()
5
bigint
int64()
6
decimal
decimal()
7
float
double()
8
double
double()
9
char
string()
10
varchar
string()
11
tinytext
string()
12
text
string()
13
mediumtext
string()
14
longtext
string()
15
year
string()
16
date
date_oracle(YYYY-MM-DD)
17
time
string()
18
datetime
date_oracle(YYYY-MM-DD HH24:MI:SS)
19
timestamp
date_oracle(YYYY-MM-DD HH24:MI:SS)
20
bit
int32()

mongoimport導(dǎo)入命令需注意以下參數(shù):

  • type 指定導(dǎo)入文件的類型,可選值有CSV、TSV、JSON.
  • fields指定Json文檔的字段名.
  • columnsHaveTypes表示指定每個(gè)字段的數(shù)據(jù)類型,如果加了此選項(xiàng),field字段后面就要加數(shù)據(jù)類型,如msisdn.string()
命令示例:
mongoimport--db ring***ne_prod --collection=Di***bt --
parseGrace=skipField--
fields="ms**dn.string(),r***ame.string(),nic**me.string(),co
***ntId.string(),cop***tId.string(),fil***pe.string(),dat***
atus.string(),localF***Path.string(),diyTran*****nId.string(
),diyFtp***ath.string(),diyFile***at.string(),cre***me.date_
oracle(YYYY-MM-DDHH24:MI:SS),lastM****ime.date_oracle(YYYY-
MM-
DDHH24:MI:SS),sta***e.string(),e***ime.string(),he***Str.str
ing(),dep***onId.string(),act***Id.string(),l***el.string()"
--type tsv --file=t_m****bt_info.tsv --
numInsertionWorkers=100--columnsHaveTypes
在上面也說過,在Mongodb中的表(集合)上沒有嚴(yán)格的結(jié)構(gòu)定義,所以字段數(shù)據(jù)沒有NULL的概念,如果該字段值數(shù)據(jù)為NULL,則直接就不需要這個(gè)字段。而在mysqldump的時(shí)候,如果數(shù)據(jù)是NULL,則導(dǎo)出的文本文件就會(huì)出現(xiàn)NULL,導(dǎo)入后會(huì)呈現(xiàn)如下情況:
此時(shí),建議導(dǎo)出的時(shí)候使用selectifnull(column_name,’’)****intooutfile的形式進(jìn)行導(dǎo)出;在使用mongoimport導(dǎo)入是指定參數(shù)--ignoreBlanks,這樣導(dǎo)入的json文檔就不會(huì)存在null的字段。如果大批量的表數(shù)據(jù)遷移,則使用selectinto outfile比較麻煩,可以考慮使用shell腳本對(duì)原始文本文件進(jìn)行全量的Null替換,然后再導(dǎo)入。
另外在生產(chǎn)中,Mysql數(shù)據(jù)中可能存在以字符串形式保存的Json文檔,在Mongodb中,這種Json文檔建議以子文檔的形式存儲(chǔ)入數(shù)據(jù)庫中,此時(shí)使用mongoimport就不能滿足需求,此時(shí)可以考慮使用python對(duì)文本數(shù)據(jù)進(jìn)行轉(zhuǎn)換后寫入mongodb。



本文作者:劉運(yùn)彬(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/129215.html

相關(guān)文章

  • mongodb從2.6遷移到3.0過程

    摘要:數(shù)據(jù)的遷移由于需要換引擎,所以原來的數(shù)據(jù)不能直接使用了,必須使用和兩個(gè)工具來遷移數(shù)據(jù)。指定一個(gè)時(shí)間限制以毫秒為單位。以上是新版本用戶角色權(quán)限的一些說明。到這里,單實(shí)例的從遷移到就基本完成了。 首發(fā)于 搞起博客 總共有這么幾個(gè)問題需要解決: 1. mongodb3.0版本的二進(jìn)制包 1. wiredTiger引擎的配置 1. 數(shù)據(jù)的遷移 1. 權(quán)限 mongodb3.0的二進(jìn)...

    xorpay 評(píng)論0 收藏0
  • [原]深入對(duì)比數(shù)據(jù)科學(xué)工具箱:Python和R 非結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)化

    摘要:則在讀取數(shù)據(jù)時(shí)將兩個(gè)中文字段混淆成了一個(gè)字段,導(dǎo)致整個(gè)數(shù)據(jù)結(jié)構(gòu)錯(cuò)亂。三條路子全軍覆沒,這讓我情何以堪,好在使用的經(jīng)驗(yàn)頗豐,通過中文的轉(zhuǎn)換和切割就輕松解決了這個(gè)問題。 概述 showImg(https://segmentfault.com/img/bVylLL); 在現(xiàn)實(shí)場(chǎng)景中,由于數(shù)據(jù)來源的異構(gòu),數(shù)據(jù)源的格式往往是難以統(tǒng)一的,這就導(dǎo)致大量具有價(jià)值的數(shù)據(jù)通常是以非結(jié)構(gòu)化的形式聚合在一起的...

    leiyi 評(píng)論0 收藏0
  • 開源|性能優(yōu)化利器:數(shù)據(jù)庫審核平臺(tái)Themis選型與實(shí)踐

    摘要:正是存在問題,促使我們考慮引入數(shù)據(jù)庫審核平臺(tái)。的確,與很多互聯(lián)網(wǎng)公司相比,數(shù)據(jù)庫數(shù)十套的估摸并不是太大但與互聯(lián)網(wǎng)類公司不同,類似宜信這類金融類公司對(duì)數(shù)據(jù)庫的依賴性更大,大量的應(yīng)用是重?cái)?shù)據(jù)庫類的,且其使用復(fù)雜程度也遠(yuǎn)比互聯(lián)網(wǎng)類的復(fù)雜。 作者:韓鋒 出處:DBAplus社群分享 Themis開源地址:https://github.com/CreditEaseDBA 拓展閱讀:宜信開源|數(shù)...

    wenhai.he 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<