777개의 .doc 파일이 있고 각 파일에는 다음과 같은 큰 Excel 테이블이 포함되어 있습니다.여기그림 1과 같습니다. 여기서는 하나의 .doc 파일만 고려됩니다. .doc 파일의 Excel 테이블을 Unix 프로그래밍 언어 및/또는 스크립트를 통해 CSV 파일로 나누고 싶습니다. Microsoft 파일 형식을 CSV 파일로 처리하는 방법을 찾을 수 없습니다. 의사코드:
- 스레드에서 확장된 .doc 파일에서 Excel 테이블 추출Unix 도구를 사용하여 많은 .doc 텍스트 + 테이블 요소를 CSV로 추출하는 방법은 무엇입니까?
Excel 테이블(여기서는 CSV로 변환되었을 수 있음)을 규칙에 따라 별도의 .CSV 파일로 분할합니다.
새로운 굵은 글씨는 새 테이블을 나타냅니다.새로운 CSV 파일입니다.
암시적 열 적용장소(하단/상단) 및날짜(dd.mm.yyyy)는 각 개별 CSV 파일에 대한 .doc 파일의 처음 두 줄에 있습니다. 사용시간열(아침/저녁/저녁).
규칙별로 대상 파일과 해당 열 찾기
- Assistants.csv - 이름, 날짜, 위치, 시간
- Other.Assistants.csv - 이름, 날짜, 위치, 시간
- General.csv - 이벤트, 날짜, 위치, 시간
그림 1 .doc 파일의 Excel 테이블 예
운영 체제: Linux Debian Stretch 9 등
데이터: .odt 파일여기
답변1
좋아요...
미니 튜토리얼 시작
따라서 일일 보고서를 가져오기 위해 postgresql 데이터베이스를 생성하는 방법에 대한 몇 가지 팁은 다음과 같습니다.
먼저, 아직 postgresql을 설치하지 않은 경우:
$sudo apt-get install postgresql
둘째, postgresql을 처음 사용하는 경우 Debian의 postgresql 기본 설치는 모든 사용자가 피어 인증을 통해 비밀번호 없이 로그인할 수 있도록 설정됩니다. 그러나 사용자가 소유한 데이터베이스를 생성해야 합니다.
수행 방법은 다음과 같습니다.
- 권한 있는 쉘을 입력하세요
$ sudo -s
- 포스트그레스 슈퍼유저 되기
#수포스트
- 사용자가 가지고 놀 수 있는 데이터베이스 만들기
postgres$ createb 데이터베이스 이름 -O 사용자
그런 다음 두 번 종료하여 사용자 모드로 돌아갑니다.
포스트그레스$ 종료
#출구
$
- postgresql을 사용할 준비가 되어 있어야 합니다.
테이블을 만들기 위해 가져올 수 있는 SQL 파일을 생성했습니다. 다음을 복사하여 비슷한 곳에 붙여넣을 수 있습니다.table.sql
CREATE TYPE shifts AS ENUM ('morning','evening','night');
CREATE TYPE titles AS ENUM ('assistant','other_assistant');
CREATE TABLE assistants (id integer, name char(20), title titles);
CREATE TABLE disposition (id integer, name char(20), shift shifts, day date, comments text);
CREATE TABLE schedule (id integer, name1 char(2), name2 char(20), name3 char(20), name4 char(20), name5 char(20), shift shifts, day date);
그런 다음 테이블을 가져옵니다.
psql
user=>\i tables.sql
일일 보고서를 세 개의 개별 CSV 파일로 구문 분석하는 경우 \copy 명령을 사용하여 각 파일을 각 개별 테이블로 직접 가져올 수 있습니다.
이 같은:
\copy assistants FROM '~/assistants.csv' WITH (FORMAT csv);
\copy dispositions FROM '~/dispositions.csv' WITH (FORMAT csv);
\copy schedule FROM '~/schedule.csv' WITH (FORMAT csv);
이렇게 하면 테이블에 데이터가 채워지고 오늘 댓글을 남긴 사람이 누구인지, 그 댓글이 무엇인지 알아내는 등의 쿼리를 수행할 수 있습니다.
이 같은:
select * from disposition where day = 'TODAY';
다음과 같은 출력이 생성될 수 있습니다.
id | name | shift | day | comments
----+----------------------+---------+------------+----------
| Vir | morning | 2017-10-23 | Peaceful
미니 튜토리얼 끝
도움이 되나요? 아니면 내가 너무 깊이 생각하고 있거나 당신을 혼란스럽게 하고 있는 걸까요?