2013-11-04 13 views
1

질문이 중복 될 수 있습니다. 그러나 나는 찾고있는 대답을 얻지 못하고있다..txt 파일에 크기/행 제한이 있습니까?

유닉스에서 4GL 바이너리 중 하나는 커서를 사용하여 테이블에서 데이터를 가져 와서 .txt 파일에 데이터를 쓰는 것입니다. 이 테이블에는 약 5 천만 개의 레코드가 있습니다. 바이너리가 많은 시간을 들여 완료되지 않았습니다. .txt 파일도 0 바이트입니다.

기록이 .txt 파일에 기록되지 않은 이유를 알고 싶습니다.

참고 : 사용 가능한 디스크 공간이 충분합니다. 또한 30 백만 레코드의 경우 예상대로 .txt 파일에서 데이터를 가져올 수 있습니다.

+0

제한이 .txt 파일이 아닌이 상황에서 작동하도록 수정할 수 있습니다 그것은 다른 파일과 같은 것입니다.)하지만 프로그램에서 읽기/쓰기가 가능합니다 (64 비트 컴퓨터에서도 32 비트 제한에 도달 할 수 있고, 문자 카운터 크기와 메모리에 따라 달라질 수 있습니다). 파일 크기 제한). –

답변

3

제공하신 정보는 파일이 왜 쓰여지지 않은지 확실하게 알리기에는 충분하지 않습니다.

UNIX에서 텍스트 파일은 다른 파일 (바이트 모음)과 같습니다. "행 크기"또는 "행 개수"에 특정 제한이나 구조가 적용되지는 않지만 일부 프로그램은 지원되는 최대 행 크기 및 구현에 따라 특정 제한을 가질 수 있습니다.

프로그램이 파일에 데이터 쓰기를 시작할 때 (즉 내부 버퍼가 처음 플러시 된 경우) 파일의 크기가 더 이상 0이 아니므로 binqary는 그 시간에 다른 작업을 수행하고 있습니다 (단, 정리의 일부로 파일을 꺼내십시오).

strace을 통해 실행 파일을 실행하여 파일 I/O 활동을 확인하십시오. 이는 진행중인 작업에 대한 단서를 제공합니다.

0

문제가 해결 될지 확실하지 않습니다. 그러나 나는 그러한 상황을 몇 번이나 겪었으며 거의 ​​모든 경우에 플러시 출력은입니다. 특히 Java에서 데이터를 작성하는 가장 좋은 방법은 버퍼를 사용하는 것입니다. 따라서 버퍼 한계에 도달하면 파일에 기록되지만 버퍼링 된 기록기를 비우지 않고 프로그램을 닫을 때 나머지 데이터는 파일에 기록되지 않습니다. 소스 코드를하거나 어떻게 든 마련 할 수있는 경우

는, 당신은 작가 플러싱의 소스를 확인하는 옵션이 있으며 (

+0

문제에 대한 구체적인 대답을 요약하지는 않았으므로이 질문에 대한 주석으로 남겨 두어야합니다. – haxxxton