복붙노트

[MONGODB] 어떻게 MongoDB의 모든 컬렉션을 내보내려면?

MONGODB

어떻게 MongoDB의 모든 컬렉션을 내보내려면?

나는 명령에 의해 MongoDB의 모든 컬렉션을 내보낼 :

mongoexport -d dbname -o Mongo.json

결과는 다음과 같습니다 어떤 컬렉션을 지정하지!

매뉴얼은 당신이 컬렉션을 지정하지 않은 경우, 모든 컬렉션을 내보낼 것이다 말한다. 그러나, 왜이 작동하지 않는 이유는 무엇입니까?

http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection

내 MongoDB의 버전은 2.0.6이다.

해결법

  1. ==============================

    1.게으른 사람, 사용 mongodump를 들어, 더 빠른 :

    게으른 사람, 사용 mongodump를 들어, 더 빠른 :

    mongodump -d <database_name> -o <directory_backup>
    

    그리고 "/ 가져 오기를 복원"을 그 (directory_backup / 덤프에서 /) :

    mongorestore -d <database_name> <directory_backup>
    

    이 방법은, 개별적으로 모든 컬렉션을 처리 할 필요가 없습니다. 그냥 데이터베이스를 지정합니다.

    나는 빅 데이터 스토리지에 대한 mongodump / mongorestore을 사용하여에 추천합니다. 그것은 매우 느립니다 당신이 과거 일단 10 / 그것을 복원하는 데 시간이 걸릴 수있는 데이터의 20기가바이트

  2. ==============================

    2.나는 그것을 위해 bash는 스크립트를 썼다. 그냥 2 개 매개 변수 (데이터베이스 이름, 저장 파일 디렉토리)를 실행합니다.

    나는 그것을 위해 bash는 스크립트를 썼다. 그냥 2 개 매개 변수 (데이터베이스 이름, 저장 파일 디렉토리)를 실행합니다.

    #!/bin/bash
    
    if [ ! $1 ]; then
            echo " Example of use: $0 database_name [dir_to_store]"
            exit 1
    fi
    db=$1
    out_dir=$2
    if [ ! $out_dir ]; then
            out_dir="./"
    else
            mkdir -p $out_dir
    fi
    
    tmp_file="fadlfhsdofheinwvw.js"
    echo "print('_ ' + db.getCollectionNames())" > $tmp_file
    cols=`mongo $db $tmp_file | grep '_' | awk '{print $2}' | tr ',' ' '`
    for c in $cols
    do
        mongoexport -d $db -c $c -o "$out_dir/exp_${db}_${c}.json"
    done
    rm $tmp_file
    
  3. ==============================

    3.서버에서 mongodump를 만들고에게 사용자 이름과 암호가 다른 서버 / 로컬 컴퓨터를 가져 아래의 단계에 따라

    서버에서 mongodump를 만들고에게 사용자 이름과 암호가 다른 서버 / 로컬 컴퓨터를 가져 아래의 단계에 따라

    1. mongodump -d dbname -o dumpname -u username -p password
    2. scp -r user@remote:~/location/of/dumpname ./
    3. mongorestore -d dbname dumpname/dbname/ -u username -p password
    
  4. ==============================

    4.다음 명령을 사용 mongodump 사용하는 모든 컬렉션을 내보내기

    다음 명령을 사용 mongodump 사용하는 모든 컬렉션을 내보내기

    mongodump -d 데이터베이스 _ -o directory_to_store_dumps

    사용이 명령을 복원하려면

    mongorestore -d database_name directory_backup_where_mongodb_tobe_restored
    
  5. ==============================

    5.우리가 고객의 몽고 DB 설치 한 곳 알려주세요? (우분투 또는 Windows에서 중)

    우리가 고객의 몽고 DB 설치 한 곳 알려주세요? (우분투 또는 Windows에서 중)

  6. ==============================

    6.당신이 bson 형식과 확인을하는 경우에, 당신은 같은 -d 플래그와 함께 mongodump 유틸리티를 사용할 수 있습니다. 그것은 bson 형식 (-o 옵션을 통해 변경 될 수있는 기본) 덤프 디렉토리에 모든 컬렉션을 덤프합니다. 그런 다음 mongorestore 유틸리티를 사용하여 이러한 파일을 가져올 수 있습니다.

    당신이 bson 형식과 확인을하는 경우에, 당신은 같은 -d 플래그와 함께 mongodump 유틸리티를 사용할 수 있습니다. 그것은 bson 형식 (-o 옵션을 통해 변경 될 수있는 기본) 덤프 디렉토리에 모든 컬렉션을 덤프합니다. 그런 다음 mongorestore 유틸리티를 사용하여 이러한 파일을 가져올 수 있습니다.

  7. ==============================

    7.당신은 컬렉션의 몽고 --eval 'printjson (db.getCollectionNames은 ())'얻을 수있는 목록을 사용할 수 있습니다 그리고 그들 모두에 mongoexport을한다. 여기 루비 예이다

    당신은 컬렉션의 몽고 --eval 'printjson (db.getCollectionNames은 ())'얻을 수있는 목록을 사용할 수 있습니다 그리고 그들 모두에 mongoexport을한다. 여기 루비 예이다

      out = `mongo  #{DB_HOST}/#{DB_NAME} --eval "printjson(db.getCollectionNames())"`
    
      collections = out.scan(/\".+\"/).map { |s| s.gsub('"', '') }
    
      collections.each do |collection|
        system "mongoexport --db #{DB_NAME}  --collection #{collection}  --host '#{DB_HOST}' --out #{collection}_dump"
      end
    
  8. ==============================

    8.나는 윈도우 배치 스크립트 버전을 필요로했다. 내가 너무 그것에 내 대답에 기여할 거라고 생각 때문에이 스레드는, 유용했다.

    나는 윈도우 배치 스크립트 버전을 필요로했다. 내가 너무 그것에 내 대답에 기여할 거라고 생각 때문에이 스레드는, 유용했다.

    mongo "{YOUR SERVER}/{YOUR DATABASE}" --eval "rs.slaveOk();db.getCollectionNames()" --quiet>__collections.txt
    for /f %%a in ('type __collections.txt') do @set COLLECTIONS=%%a
    for %%a in (%COLLECTIONS%) do mongoexport --host {YOUR SERVER} --db {YOUR DATABASE} --collection %%a --out data\%%a.json
    del __collections.txt
    

    I는 따라서위한 / F 법 선상 세트 / P 모음 = <__ collections.txt 사용하여 몇 가지 문제점이 있었다.

  9. ==============================

    9.이전 대답은 내가 원격 암호로 보호 된 데이터베이스를 다루고있는 경우 도움말을 내 대답을 추가하고, 그것을 잘 설명

    이전 대답은 내가 원격 암호로 보호 된 데이터베이스를 다루고있는 경우 도움말을 내 대답을 추가하고, 그것을 잘 설명

    mongodump --host xx.xxx.xx.xx --port 27017 --db your_db_name --username your_user_name --password your_password --out /target/folder/path
    
  10. ==============================

    10.경우에 당신은 mongolab.com 같은 원격 MongoDB를 서버, 당신은 연결 자격 증명을 전달해야 연결할 예를 들면.

    경우에 당신은 mongolab.com 같은 원격 MongoDB를 서버, 당신은 연결 자격 증명을 전달해야 연결할 예를 들면.

    mongoexport -h id.mongolab.com:60599 -u username -p password -d mydb -c mycollection -o mybackup.json
    
  11. ==============================

    11.당신이 원하는 경우에, 당신은 (모든 필드를 보냅니다) --fields를 지정하지 않고 CSV로 모든 컬렉션을 내보낼 수 있습니다.

    당신이 원하는 경우에, 당신은 (모든 필드를 보냅니다) --fields를 지정하지 않고 CSV로 모든 컬렉션을 내보낼 수 있습니다.

    http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/에서하면이 bash는 스크립트를 실행

    OIFS=$IFS;
    IFS=",";
    
    # fill in your details here
    dbname=DBNAME
    user=USERNAME
    pass=PASSWORD
    host=HOSTNAME:PORT
    
    # first get all collections in the database
    collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
    collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
    collectionArray=($collections);
    
    # for each collection
    for ((i=0; i<${#collectionArray[@]}; ++i));
    do
        echo 'exporting collection' ${collectionArray[$i]}
        # get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
        keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
        # now use mongoexport with the set of keys to export the collection to csv
        mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
    done
    
    IFS=$OIFS;
    
  12. ==============================

    12.나는 아주 간단한 방법은 나를 위해 일한 뒤얽힌 예를 많이 시도 후 발견.

    나는 아주 간단한 방법은 나를 위해 일한 뒤얽힌 예를 많이 시도 후 발견.

    난 그냥 지역에서 DB의 덤프를 가지고 원격 인스턴스에 가져 싶었 :

    로컬 컴퓨터에서 :

    mongodump -d databasename
    

    나는 내 서버 시스템 내 덤프를 scp'd :

    scp -r dump user@xx.xxx.xxx.xxx:~
    

    단순히 덤프의 상위 디렉토리에서 :

    mongorestore 
    

    그 데이터베이스를 수입했다.

    가정 MongoDB의 서비스는 물론 실행 중입니다.

  13. ==============================

    13.당신은 그 사용 (원래 질문자의 의도의 광대 한 해석되는) 모든 데이터베이스의 모든 컬렉션을 덤프하려면

    당신은 그 사용 (원래 질문자의 의도의 광대 한 해석되는) 모든 데이터베이스의 모든 컬렉션을 덤프하려면

    mongodump
    

    모든 데이터베이스와 컬렉션은 '현재'위치에서 '덤프'라는 디렉토리에 생성됩니다

  14. ==============================

    14.당신은 당신이 DB를 몽고에 provided.You 나중에 다음 zip 파일을 가져올 수있는 데이터베이스 {DBNAME}의 압축 파일을 만듭니다 다음 명령 .IT을 사용하여 zip 파일을 만들 수 있습니다.

    당신은 당신이 DB를 몽고에 provided.You 나중에 다음 zip 파일을 가져올 수있는 데이터베이스 {DBNAME}의 압축 파일을 만듭니다 다음 명령 .IT을 사용하여 zip 파일을 만들 수 있습니다.

    Window filepath=C:\Users\Username\mongo 
    
    mongodump --archive={filepath}\+{filename}.gz --gzip --db {dbname}
    
  15. ==============================

    15.여기에 내 보낸 데이터베이스를 복원 할 때 나를 위해 일한 내용은 다음과 같습니다

    여기에 내 보낸 데이터베이스를 복원 할 때 나를 위해 일한 내용은 다음과 같습니다

    mongorestore -d 0 ./0 --drop

    여기서 보낸 bson 파일을 ./contained. --drop가 기존 데이터를 덮어 씌 웁니다.

  16. ==============================

    16.나는 이것이 아주 오래된 질문은 당신이 인덱스를 포함하여 100 % 충실한 결과를 원하는 경우 그 mongodump가 / 분명 올바른 방법 mongorestore 것을 알고 있습니다.

    나는 이것이 아주 오래된 질문은 당신이 인덱스를 포함하여 100 % 충실한 결과를 원하는 경우 그 mongodump가 / 분명 올바른 방법 mongorestore 것을 알고 있습니다.

    그러나, 나는 가능성이 전달 및 MongoDB를의 이전 및 새 버전과 호환이 될 것입니다 신속하고 더러운 솔루션을 필요로 벌어 특히 이상한 아무것도 제공. 그리고 그것을 위해 나는 원래의 질문에 대한 답을 원했다.

    이 위의 다른 허용 솔루션이 있지만,이 유닉스 파이프 라인은 상대적으로 짧고 달콤한 :

    mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
    grep -v system.indexes | \
    xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json
    

    이는 각 수집에 대한 적절한 이름 .json 파일을 생성합니다.

    데이터베이스 이름 ( "하여 MyDatabase")가 두 번 표시합니다. 나는 데이터베이스가 로컬 있으리라 믿고있어 당신은 자격 증명을 전달 할 필요가 없습니다하지만 몽고와 mongoexport 모두 그렇게 간단합니다.

    나는 새로운 하나에서 시스템 모음을 해석하려고 MongoDB를의 이전 버전을 원하지 않기 때문에 내가 그렙 -v에 폐기 system.indexes 사용하고 있습니다. 대신에 나는 인덱스를 다시 평소 ensureIndex 통화를 할 내 응용 프로그램을 허용하고 있습니다.

  17. ==============================

    17.당신이 / 내보내기에 mongoexport 및 mongoimport을 사용하여 데이터베이스에서 각 수집을 가져올 경우,이 유틸리티를 사용하면 도움이 될 수 있다고 생각합니다. 나는 배의 유사한 유틸리티 커플을 사용했습니다;

    당신이 / 내보내기에 mongoexport 및 mongoimport을 사용하여 데이터베이스에서 각 수집을 가져올 경우,이 유틸리티를 사용하면 도움이 될 수 있다고 생각합니다. 나는 배의 유사한 유틸리티 커플을 사용했습니다;

    LOADING=false
    
    usage()
    {
        cat << EOF
        usage: $0 [options] dbname
    
        OPTIONS:
            -h      Show this help.
            -l      Load instead of export
            -u      Mongo username
            -p      Mongo password
            -H      Mongo host string (ex. localhost:27017)
    EOF
    }
    
    while getopts "hlu:p:H:" opt; do
        MAXOPTIND=$OPTIND
    
        case $opt in 
            h)
                usage
                exit
                ;;
            l)
                LOADING=true
                ;;
            u)
                USERNAME="$OPTARG"
                ;;
            p) 
                PASSWORD="$OPTARG"
                ;;
            H)
                HOST="$OPTARG"
                ;;
            \?)
                echo "Invalid option $opt"
                exit 1
                ;;
        esac
    done
    
    shift $(($MAXOPTIND-1))
    
    if [ -z "$1" ]; then
        echo "Usage: export-mongo [opts] <dbname>"
        exit 1
    fi
    
    DB="$1"
    if [ -z "$HOST" ]; then
        CONN="localhost:27017/$DB"
    else
        CONN="$HOST/$DB"
    fi
    
    ARGS=""
    if [ -n "$USERNAME" ]; then
        ARGS="-u $USERNAME"
    fi
    if [ -n "$PASSWORD" ]; then
        ARGS="$ARGS -p $PASSWORD"
    fi
    
    echo "*************************** Mongo Export ************************"
    echo "**** Host:      $HOST"
    echo "**** Database:  $DB"
    echo "**** Username:  $USERNAME"
    echo "**** Password:  $PASSWORD"
    echo "**** Loading:   $LOADING"
    echo "*****************************************************************"
    
    if $LOADING ; then
        echo "Loading into $CONN"
        tar -xzf $DB.tar.gz
        pushd $DB >/dev/null
    
        for path in *.json; do
            collection=${path%.json}
            echo "Loading into $DB/$collection from $path"
            mongoimport $ARGS -d $DB -c $collection $path
        done
    
        popd >/dev/null
        rm -rf $DB
    else
        DATABASE_COLLECTIONS=$(mongo $CONN $ARGS --quiet --eval 'db.getCollectionNames()' | sed 's/,/ /g')
    
        mkdir /tmp/$DB
        pushd /tmp/$DB 2>/dev/null
    
        for collection in $DATABASE_COLLECTIONS; do
            mongoexport --host $HOST -u $USERNAME -p $PASSWORD -db $DB -c $collection --jsonArray -o $collection.json >/dev/null
        done
    
        pushd /tmp 2>/dev/null
        tar -czf "$DB.tar.gz" $DB 2>/dev/null
        popd 2>/dev/null
        popd 2>/dev/null
        mv /tmp/$DB.tar.gz ./ 2>/dev/null
        rm -rf /tmp/$DB 2>/dev/null
    fi
    
  18. ==============================

    18.모든 서버의 DBS는 DBS가 호출되어 있는지에 대한 걱정을하지 않고 백업 할 경우, 다음 쉘 스크립트를 사용 :

    모든 서버의 DBS는 DBS가 호출되어 있는지에 대한 걱정을하지 않고 백업 할 경우, 다음 쉘 스크립트를 사용 :

    #!/bin/sh
    
    md=`which mongodump`
    pidof=`which pidof`
    mdi=`$pidof mongod`
    dir='/var/backup/mongo'
    
    if [ ! -z "$mdi" ]
       then
            if [ ! -d "$dir" ]
               then
                   mkdir -p $dir
               fi
            $md --out $dir >/dev/null 2>&1
       fi
    

    이 지정하지 않은 경우 의지 백업 모든 데시벨을 mongodump 유틸리티를 사용합니다.

    당신은 당신으로 cronjob에 넣고 수 있으며, mongod 프로세스가 실행중인 경우에만 실행됩니다. 존재하지 않는 경우는 또한 백업 디렉토리를 생성합니다.

    전역 덤프에서 개별 DB를 복원 할 수 있도록 각각의 DB 백업은 개별 디렉토리에 기록됩니다.

  19. ==============================

    19.이미 당신은 Robomongo 또는 Mongochef 같은 GUI로 그런 종류의 작업을 할 수 있습니다.

    이미 당신은 Robomongo 또는 Mongochef 같은 GUI로 그런 종류의 작업을 할 수 있습니다.

  20. ==============================

    20.

    #mongodump using sh script 
    #!/bin/bash
    TIMESTAMP=`date +%F-%H%M`
    APP_NAME="folder_name"
    BACKUPS_DIR="/xxxx/tst_file_bcup/$APP_NAME"
    BACKUP_NAME="$APP_NAME-$TIMESTAMP"
    /usr/bin/mongodump -h 127.0.0.1 -d <dbname> -o $BACKUPS_DIR/$APP_NAME/$BACKUP_NAME
    tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUPS_DIR/$APP_NAME/$BACKUP_NAME
    rm -rf /home/wowza_analytics_bcup/wowza_analytics/wowza_analytics
    ### 7 days old backup delete automaticaly using given command
    
    find /home/wowza_analytics_bcup/wowza_analytics/ -mindepth 1 -mtime +7 -delete
    
  21. ==============================

    21.첫째, 시작의 MongoDB를 - 같은 경로에 그 이동을위한 ->

    첫째, 시작의 MongoDB를 - 같은 경로에 그 이동을위한 ->

    C : \ 프로그램 파일 \ MongoDB를 \ 서버 \ 3.2 \ bin 및 MongoDB를 서버를 시작하기 위해 mongod.exe 파일을 클릭합니다.

    윈도우에서 내보내기 명령

    C :> mongodump --host remote_ip_address : 27,017 --db -o C : / 사용자 / 데스크탑 / 임시 폴더

    윈도우에서 가져 오기 명령

    C :> mongorestore --host = IP --port = 27017 -d C : / 사용자 / 데스크탑 / 임시 폴더 / DB-DIR

  22. ==============================

    22.수출:

    수출:

    몽고 / 빈> mongoexport webmitta -c -d 도메인 도메인 - 그는 k.json

    수입:

    mongoimport -d DBNAME -c newCollecionname --file 도메인 k.json

    어디에

    webmitta(db name)
    domain(Collection Name)
    domain-k.json(output file name)
    
  23. ==============================

    23.수행하려는 작업에 따라 여러 가지 옵션이 있습니다

    수행하려는 작업에 따라 여러 가지 옵션이 있습니다

    다른 몽고 데이터베이스에 데이터베이스를 내보내려면 1), 당신은 mongodump 사용해야합니다. 이 JSON은 없을 것으로 메타 데이터가 BSON 파일의 폴더를 만듭니다.

    mongodump
    mongorestore --host mongodb1.example.net --port 37017 dump/
    

    당신은 당신이 한 번에 그것을 하나 개의 모음을 할 필요를 제외하고는 mongoexport을 사용할 수 있습니다 JSON으로 데이터베이스를 내보낼 경우 2) (이) 디자인입니다. 그러나 나는 그것이 mongodump으로 전체 데이터베이스를 내 보낸 다음 JSON으로 변환하는 가장 쉬운 것 같아요.

    # -d is a valid option for both mongorestore and mongodump
    
    mongodump -d <DATABASE_NAME>
    for file in dump/*/*.bson; do bsondump $file > $file.json; done
    
  24. ==============================

    24.덤프를 들어, DB 명령 아래를 따라

    덤프를 들어, DB 명령 아래를 따라

       mongodump -d <your d name> -o <dump path>
    Ex:mongodump -d qualetics -o D:\dbpackup\qualetics
    
  25. ==============================

    25.당신은 mongodump 명령을 사용하여 작업을 수행 할 수 있습니다

    당신은 mongodump 명령을 사용하여 작업을 수행 할 수 있습니다

    내 보낸 파일이 생성됩니다 destination_path를 \ your_db_name 폴더 (이 예를 들어, C에서 : \ 사용자 \ HP \ 바탕 화면 \ 테스트)

    참고 : o7planning

  26. ==============================

    26.JSON 형식으로 내보내려면 당신이 볼 수있는 명령에 따라이 작업을 수행.

    JSON 형식으로 내보내려면 당신이 볼 수있는 명령에 따라이 작업을 수행.

    mongoexport --db dbname --collection collectionName --out directoryPATH/JSONfileName.json
    
  27. from https://stackoverflow.com/questions/11255630/how-to-export-all-collections-in-mongodb by cc-by-sa and MIT license