csv 파일을 SQLite 테이블로 가져 오려고합니다.
csv 예 :
1,2
5,6
2,7
예제 명령 :
sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4
6 개의 데이터와 2 개의 열이있는 4 개의 열을 찾는 이유도 모르겠습니다.
답변
주석에서도 언급 된 내용은 SQLite는 귀하의 입력을 1, 25, 62, 7로 간주합니다. 나도에서 문제가 발생했으며 제 경우에는 “separator”를 “.mode csv”로 변경하여 해결했습니다. 따라서 시도해 볼 수 있습니다.
sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo
첫 번째 명령은 테이블의 열 이름을 만듭니다. 그러나 csv 파일에서 상속 된 열 이름을 원하는 경우 첫 번째 줄을 무시할 수 있습니다.
답변
내가 한 방법은 다음과 같습니다.
- csv 파일을 탭 (\ t)으로 구분하고 따옴표로 묶지 않도록 만들기 / 변환합니다 (sqlite는 따옴표를 문자 그대로 해석-이전 문서를 말합니다)
-
데이터를 추가해야하는 db의 sqlite 쉘을 입력하십시오.
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes
sqlite> .import afile.csv tablename-to-import-to
답변
여기에 이전 답변의 정보를 내 경험과 병합하고 있습니다. 가장 쉬운 방법은 쉼표로 구분 된 표 헤더를 csv 파일에 직접 추가 한 다음 새 줄을 추가 한 다음 모든 csv 데이터를 추가하는 것입니다.
(나와 같은) sqlite 작업을 다시하지 않으면 웹 검색을 한두 번 절약 할 수 있습니다.
Sqlite 셸에서 다음을 입력합니다.
$ sqlite3 yourfile.sqlite
sqlite> .mode csv
sqlite> .import test.csv yourtable
sqlite> .exit
Mac에 Sqlite가 설치되어 있지 않은 경우 다음을 실행하십시오.
$ brew install sqlite3
Homebrew를 설치하는 방법에 대해 웹 검색을 한 번 수행해야 할 수도 있습니다.
답변
.import 명령 앞에 “.mode csv”를 입력합니다.
답변
csv 파일을 sqlite3로 가져 오는 방법
-
데이터베이스 생성
sqlite3 NYC.db
-
모드 및 테이블 이름 설정
.mode csv tripdata
-
csv 파일 데이터를 sqlite3로 가져 오기
.import yellow_tripdata_2017-01.csv tripdata
-
테이블 찾기
.tables
-
테이블 스키마 찾기
.schema tripdata
-
테이블 데이터 찾기
select * from tripdata limit 10;
-
테이블의 행 수를 계산
select count (*) from tripdata;
답변
Termsql 을 사용하면 한 줄로 수행 할 수 있습니다.
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
답변
나는 똑같은 문제가있었습니다 (SQLite3 3.7.13이있는 OS X Maverics 10.9.1에서 SQLite가 원인과 관련이 있다고 생각하지 않습니다). MS Excel 2011에서 저장된 csv 데이터를 가져 오려고했습니다. ';'
열 구분자로 사용합니다 . Excel의 csv 파일이 여전히 Mac OS의 개행 문자를 9 번 사용한다는 것을 알게되었고,이를 유닉스 개행으로 변경하면 문제가 해결되었습니다. AFAIR BBEdit에는 Sublime Text 2뿐만 아니라 이에 대한 명령이 있습니다.