2014-10-20 5 views
-2

저는 Go Lang 프로그래머입니다. Go lang 기능을 배우려고합니다. GO lang의 여러 파일로 큰 csv 파일을 분할하고 싶었습니다. 각 파일에 헤더가 들어 있습니다. 어떻게해야합니까? 나는 도처에 수색했지만 couldnt는 바로 솔루션을 얻습니다.이 점에 관해서는 대단히 감사하겠습니다. 또한 참조 용으로 좋은 책을 제안 해주세요.GO lang에서 큰 csv 파일을 여러 파일로 분할하는 방법은 무엇입니까?

쉘 쿵푸에 따라 당신에게

답변

2

하라구요이 문제는 일반적인 쉘 유틸리티에 더 적합 할 수 있지만, 특별히 이동을 언급했다.

문제를 생각해 봅시다.

이 CSV 파일의 크기는 얼마입니까? 우리는 100 라인을 말하고 있습니까, 아니면 5G입니까? 에 관계없이

http://golang.org/pkg/encoding/csv/

을 -의 문제의 추상화로 돌아가 보자

http://golang.org/pkg/io/ioutil/#ReadFile

그러나,이 패키지는 존재 : 그것은 좀 작은 있다면

나는 일반적으로 사용합니다. 헤더 (첫 번째 줄)와 나머지 문서가 있습니다.

그럼 우리가하고 싶은 것은 (우리가 잠시 동안 csv를 무시한다면) 우리의 파일을 읽는 것입니다.

그런 다음 파일 본문을 모든 줄 바꿈으로 분할하려고합니다.

http://golang.org/pkg/strings/#Split

당신은 언급하지 않았다하지만 당신은 당신이로 분할하는 방법을 많은 파일 알고하거나 오히려 줄 수 또는 바이트 수에 의해 분할 것 :

당신은 그렇게 할 이것을 사용할 수 있습니다 ? 여기에 실제 제한은 무엇입니까?

일반적으로 파일 수는 아니지만 우리가 단순히 파일 수를 줄 것으로 예상되는 파일 수로 줄 수를 나누는 것이 좋습니다.

이제 우리는 적절한 크기의 조각을 할 수 있으며 통하여 파일을 다시 쓰기 :

http://golang.org/pkg/io/ioutil/#WriteFile

내가 도움이 언젠가 사용하는 트릭이 나에게 이런 일을 던졌다 생각하는 우리의 사명을 적어.

그럼 난 조각으로 그 헤어지는 시작하지만 분열을/접근 방법을 정복 "나는 이동에 여러 개의 파일로 큰 CSV 파일을 분할 할"- 하나에 모든 문제를 해결하려고하지 않습니다 가서 그냥 생각해 볼 수있는 곳으로 나눠보세요.

또한 실제 코드를 편안하게 쓸 수있을 때까지 의사 코드를 gratiutious하게 사용하십시오. 때로는 코드가 어떻게 흐르게 될 것이라고 생각하는지에 대한 간단한 설명을 작성하고 코드 작성 및 작업 할 수있는 가장 작은 부분까지 코드를 가져 오는 것이 도움이되는 경우가 있습니다.

그건 그렇고 - golang의 많은.org 패키지에는 예를 들어 브라우저에서 문자 그대로 예제 코드를 실행하고 자신의 로컬 환경에 잘라내거나 붙여 넣을 수있는 예제 링크가 있습니다.

또한 나는 이것을 사용하여 일부 싫어하는 사람들을 만날 것입니다. 그러나 책은 - 당신은 독서보다는 일하는 것을 시도함으로써 훨씬 더 빨리 배울 것입니다. 행동은 항상 수동적입니다. 실패하는 것을 두려워하지 마십시오.

+0

CSV는 줄 안에 줄 바꿈을 포함 할 수 있습니다. :) –

관련 문제