2017-10-27 5 views
2

비어 있지만 이미 SQLite 데이터베이스에있는 테이블에 CSV 파일을 가져 오려고합니다. 예를 들면 : 나는 기본 키, 데이터 유형 및 외래 키 제약 조건을 지정하고 싶습니다 때문에머리글을 포함하지 않고 CSV 파일을 기존 테이블로 가져올 수 있습니까?

sqlite> CREATE TABLE data (...); 
sqlite> .mode csv 
sqlite> .import mydata.csv data 

나는 사전에 테이블을 만들었습니다. 이 프로세스는 예상대로 작동하지만 불행히도 표의 CSV 파일에서 헤더 행을 포함합니다. (1) 표 "TAB1을"이전에 (2) 표 "TAB1"존재하지 않습니다

고려해야하는 두 가지 경우가 있습니다 : 여기

내가 CSV 수입에 관한 SQLite는 문서에서 배운 무엇을 이미 존재합니다.

첫 번째 경우 이전에 테이블이 존재하지 않으면 테이블이 자동으로 만들어지고 입력 된 CSV 파일의 첫 번째 행의 내용이 테이블의 모든 열 이름을 결정하는 데 사용됩니다. 즉, 이전에 테이블이 존재하지 않으면 CSV 파일의 첫 번째 행이 열 이름으로 해석되고 실제 데이터는 CSV 파일의 두 번째 행에서 시작됩니다.

두 번째 경우에는 표가 이미있는 경우 첫 번째 행을 포함하여 CSV 파일의 모든 행이 실제 내용으로 간주됩니다. CSV 파일에 열 레이블의 초기 행이 포함되어 있으면 해당 행은 데이터로 읽혀 테이블에 삽입됩니다. 이를 방지하려면 이전에 테이블이 존재하지 않는지 확인하십시오.

기본적으로 나는 테이블을 미리 작성했기 때문에 추가 데이터를 얻습니다. 이 동작을 변경할 수있는 플래그가 있습니까? 그렇지 않은 경우 가장 좋은 해결 방법은 무엇입니까?

답변

1

sqlite3 명령 줄 셸에는 이러한 플래그가 없습니다.

당신은 충분히 고급 OS가있는 경우, 첫 번째 오프라인 분할 외부 도구를 사용할 수 있습니다

sqlite> .import "|tail -n +2 mydata.csv" data