복붙노트

[MONGODB] mongoimport를 사용하여 가져 오기 이상의 1 JSON 파일

MONGODB

mongoimport를 사용하여 가져 오기 이상의 1 JSON 파일

나는 MongoDB를 위해 새로운 오전 한 서버에서 다른 서버로 JSON 파일을 가져 오기에 대해 알고 싶어요. 나는 다음과 같은 명령 mongoimport -d 시험 -c BIK check.json을 시도하고 나를 위해 잘 작동합니다. 지금은 내가 하나의 이동에 그들 모두를 가져 어떻게 여러 JSON 파일이있을 때 알고 싶어요. 나는 이것이 가능하지 않은 기록 된 모든 관련 문서를 찾을 수 없습니다. 도움 나이 가능하고 어떻게하세요

해결법

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

    1.당신은 항상 어떤 쉘 스크립트를 작성할 수 있습니다.

    당신은 항상 어떤 쉘 스크립트를 작성할 수 있습니다.

    colls=( mycoll1 mycoll2 mycoll5 )
    
    for c in ${colls[@]}
    do
      mongoimport -d mydb -c $c.json
    done
    
  2. ==============================

    2.나는 자동으로 모든 컬렉션을 가져올 수있는 더 우아한 방법을 함께했다 :

    나는 자동으로 모든 컬렉션을 가져올 수있는 더 우아한 방법을 함께했다 :

    ls -1 *.json | sed 's/.json$//' | while read col; do 
        mongoimport -d db_name -c $col < $col.json; 
    done
    

    난이 도움이되기를 바랍니다.

  3. ==============================

    3.윈도우 배치 버전 :

    윈도우 배치 버전 :

    @echo off
    for %%f in (*.json) do (
        "mongoimport.exe" --jsonArray --db databasename --collection collectioname --file %%~nf.json
    )
    
  4. ==============================

    4.또한이 방법으로 그것을 할 수 있습니다 :

    또한이 방법으로 그것을 할 수 있습니다 :

    for filename in *; do mongoimport --db <Database> --collection <Collection Name> --file $filename; done
    
  5. ==============================

    5.이 MAC OS X에서 나를 위해 일한

    이 MAC OS X에서 나를 위해 일한

    find . -regex '.*/[^/]*.json' | xargs -L 1 mongoimport --db DB_NAME -u USER_NAME -p PASSWORD --collection COLLECTION_NAME  --file
    
  6. ==============================

    6.창 박쥐 파일하십시오. 당신이 폴더에 JSON 파일의 목록이있는 경우에 더 좋은 방법이 될 것입니다. 및 컬렉션 이름은 파일 이름과 일치

    창 박쥐 파일하십시오. 당신이 폴더에 JSON 파일의 목록이있는 경우에 더 좋은 방법이 될 것입니다. 및 컬렉션 이름은 파일 이름과 일치

    @echo off
    for %%f in (*.json) do (
        "mongoimport.exe" --db databasename --collection %%~nf --drop --file %%f
    )
    pause
    
  7. ==============================

    7.또 다른 하나의 라인 용액 (당신이 JSON 파일이있는 폴더에 가정) :

    또 다른 하나의 라인 용액 (당신이 JSON 파일이있는 폴더에 가정) :

    ls | sed 's/.json$//' | xargs -I{} mongoimport -d DATABASE_NAME -c {} {}.json
    
  8. ==============================

    8.I 효율적으로 (그것은 또한 맥에서 작동)에만 리눅스의 터미널을 사용하여 많은 컬렉션을 가져 오는 방법을 보여 드리겠습니다.

    I 효율적으로 (그것은 또한 맥에서 작동)에만 리눅스의 터미널을 사용하여 많은 컬렉션을 가져 오는 방법을 보여 드리겠습니다.

    동일한 폴더에서 모든 JSON 파일이 있어야하고 파일의 이름은 데이터베이스에 가져옵니다 수집해야합니다.

    그래서, 당신의 JSON 파일이 들어있는 폴더를 열고, 시작합시다. 다음 아래 줄을 실행, 데이터베이스 이름으로 를 바꾸기 :

    에서 수집 $ (LS가 | 컷 -d -f1을 '.'); 할 mongoimport --db --collection $ {수집} --file $ {수집} .json; 끝난

    그러나이 무슨 일입니까?

    우선, 당신은 괄호가 먼저 실행된다는 것을 명심해야한다. 이 경우, (그것의 확장을 제거) 각 파일의 이름 만 받고 모든 파일의 목록을 만듭니다.

    둘째, 모든 목록 (이 변수의 이름은 당신이 원하는 무엇이든 될 수있다) 지역 변수라는 컬렉션 "에 대한"루프에 추가됩니다

    셋째,은 (*) "할"가져 ​​오기 줄을 실행

    마지막으로, "완료"루프를 완료합니다.

    (*) 수입 라인은 "--db"컬렉션 이름 "--collection을"데이터베이스 이름이 필요합니다 "mongoimport"및 "--file"파일 이름으로 구성되어있다. 이러한 요구 사항은 물건 "은"에서 만든 "$ 수집"변수에 의해 작성되었습니다

    나는 도움이 사람을 바랍니다! 행운이 있길 바래 :)

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

    9.나는 빨리이 일을 내 bash는 프로필에 쉘 기능을 추가하려면 여기 솔루션을 사용했다.

    나는 빨리이 일을 내 bash는 프로필에 쉘 기능을 추가하려면 여기 솔루션을 사용했다.

    내 예는 콜렉션 이름과 .metadata.json 확장자를 가진 파일로 각 모음을 출력하는 몽고 수출에 의존한다.

    mimport 함수 () {   *의 파일명; 해야 할 것     수집 = "$ {파일 이름 % .metadata.json}";     $ 파일 이름 --file mongoimport --db $ (1) --collection $ 수집;   끝난 }

    수출 파일의 경로를 사용하여, 명령에 DB 이름을 통과 ...

    mimport의 my_db

    로컬 호스트에서 DB에 모든 컬렉션을로드합니다.

  10. ==============================

    10.리눅스 :

    리눅스 :

    > cat one.json two.json > three.json
    
    > mongoimport --db foo --collection baz --file three.json"
    

    폴더 또는 모든 파일 :

    > cat *.json > big.json
    
    > mongoimport --db foo --collection baz --file "big.json"
    
  11. ==============================

    11.한 줄 솔루션 :

    한 줄 솔루션 :

    / F에 대한 % ( 'DIR / B C : \ 파일 \ * JSON.')에서 수행 mongoimport.exe I / D dB / 파일 / 파일 C C : \ 파일 \ %의 난

  12. ==============================

    12.확실하지가 새로운 기능이지만 mongoimport 지금 실제로 표준 입력에서 읽을 수 있는지 여부를 지정합니다. 어떤 사람이 여러 JSON 파일을 가져올하기 위해 할 수있는 것은 단순하게되도록

    확실하지가 새로운 기능이지만 mongoimport 지금 실제로 표준 입력에서 읽을 수 있는지 여부를 지정합니다. 어떤 사람이 여러 JSON 파일을 가져올하기 위해 할 수있는 것은 단순하게되도록

    cat *.json | mongoimport --uri "mongdb://user:password@host/db?option=value" --collection example
    

    나는 MongoDB를-도구 BTW V4.2.0 사용하고 있습니다.

    최신 정보

    mongodbimport 잠재적 프로그램 시스템 OOM 의해 킬 원인이 될 수있는 메모리의 많은 양을 소모 할 수있다. 내 컴퓨터 32GB의 RAM을 가지고 내가 RAM 디스크에 저장된 데이터의 ~ 10 기가 바이트 가져올 시도 할 때이 지속적으로 일어났다.

    배치에 상대적으로 큰 일을 분할하려면 :

    #!/usr/bin/env bash
    
    declare -a json_files=()
    for f in *.json; do
        json_files+="$f"
        if [[ "${#json_files[@]}" -ge 1000 ]]; then
            cat "${json_files[@]}" | mongoimport --uri="mongodb://user:pass@host/db" --collection=examples -j8 #--mode=upsert --upsertFields=id1
            json_files=()
        fi
    done
    
  13. from https://stackoverflow.com/questions/11609647/import-more-than-1-json-file-using-mongoimport by cc-by-sa and MIT license