2015-02-05 3 views
2

MongoDB에로드하고 싶은 많은 CSV 파일이 있습니다. 테스트 및 데이터 계보 용으로 수행하려는 작업은 파일이 레코드 내의 추가 필드로 제공되는 파일 이름에로드됩니다. - mongoimport 문법을 살펴 봤지만 가능하지 않습니다.추가 필드로 mongodb 가져 오기 파일 이름?

내가 뭘 원하는 것은 CSV에서 (즉 users1.csv) 파일 USERID, 이름, 이메일 1, 요한, [email protected]을 포함 과 모음에로드 할 것이다

_ID, USERID, NAME, EMAIL, SOURCEFILE XXXXXX, 1, John, john @ example.com, users1.csv

어떤 방법으로이를 수행 할 수 있습니까?

1 - 파일 내에서 소스 코드를 만들기 위해 일부 사전 프로세스를 실행하려고 생각했지만 이상적으로 원래 데이터 소스를 변경하고 싶지 않습니다.

2 - 파일 이름을 사용하여 데이터 세트를 소급 적으로 업데이트하려고 생각했습니다. 이는 좋은 옵션 인 것처럼 보이지만 세트로드 사이에서 발생해야합니다 (예 : users1.csv를 가져온 후 users2.csv를 가져 오기 전).

우아한 방법에 대한 제안이있는 사람이 있습니까? anyones 입력을 주시면 감사하겠습니다.

+0

mongoimport에서 어떤 문제가 있었습니까? 너 시도 했니? – Pogrindis

+0

mongoimport를 수행했는데 오류가 발생하지 않았지만 문법 내에서 현재 파일 이름을 필드로 사용하는 옵션을 볼 수 없었습니다 ... –

+0

mongoimport가 파일 이름을 추가 할 수 없습니다. 1, 2를하거나 CSV 라이브러리와 드라이버를 사용하여 가져 오기 작업을 직접 작성해야합니다. – wdberkeley

답변

0

mongo 가져 오기를 사용할 수없는 이유는 확실하지 않습니다.

mongoimport -d databaseToUse -c Collection --type csv --ignoreBlanks --file users1.csv --headerline 

--headerline

는 내가 테스트 한

--fields <field1[,field2]>, -f <field1[,field2] etc etc> 

과 같은 경우

나중에 필드를 지정할 수 있습니다 ..이 파일 아무 문제를 가져와야합니다 필드 이름과 첫 번째 줄을 사용하여 이것은 아무 문제가 없었습니다.

덧붙여 updateOne 함수를 함께 사용하여 파일 이름을 레코드에 추가 할 수 있습니다 ..

var bulk = dataBaseToUse.items.initializeUnorderedBulkOp(); 
bulk.find({name:someField}).update({ $set: { sourceFile: fileName } }); 

그 라인을 따라 가면서 어쩌면? 이 필드에 대한 -f PARAM를 사용하여 1 개 이동에 상세 정보를 추가 할 수 있습니다 초기 수입에서

.. 이런

뭔가 필드를 만듭니다 업데이트해야합니다 다음 거기에서

mongoimport -d databaseToUse -c Collection --type csv --ignoreBlanks --file users1.csv -f "id, userID, name, email, sourceFile" 

전체 1 개의 다른 라이너 컬렉션.

가져 오기는 단지 .. 가져 오기 도구 일뿐입니다. 즉석에서 가져 오기 및 편집 할 필요가 없습니다.

업데이트 기능은 이러한 라인을 따라 뭔가 될 것이다 :

dataBaseToUse.Collection.update(
    { 
    $set: { sourceFile: "users1.csv" } 
    }) 

내가 확인하기 위해이 100 %를 테스트 할 필요가 있지만 작업 할 수 있습니다! :)

+1

아무런 문제없이 데이터를 가져올 수 있었지만 파일 배치에 대한 프로세스를 자동화하고 추가 파일 이름 필드를 추가하는 방법을 생각할 수 없었습니다. --fields

+0

@mr_gooding 지금 볼 수있는 2 단계로 보이는 대답을 업데이트했습니다. 사용할 수있는'$ setOnInsert'가 있지만 mongoimport 메소드에 적용 할 수 없습니다! : – Pogrindis

+0

고마워, 그걸 할 수있는 것처럼 들리 네. 그러면 mongoimport를 호출 한 래퍼 스크립트를 호출하고 두 번째 업데이트 명령으로 mongo.exe를 호출하여 sourcefile을 설정합니다. 도움을 주시면 감사하겠습니다. 나는 내일 이것을 시도 할 기회를 가졌다. –

관련 문제