.sql 또는 .csv 파일을 SQLite 에 덤프해야합니다 (SQLite3 API를 사용하고 있습니다). 전체 데이터베이스가 아닌 테이블 가져 오기 /로드에 대한 문서 만 찾았습니다. 지금 입력 할 때 :
sqlite3prompt> .import FILENAME TABLE
전체 DB가 아닌 테이블을 예상하기 때문에 구문 오류가 발생합니다.
답변
SQL 파일에서 가져 오려면 다음을 사용하십시오.
sqlite> .read <filename>
CSV 파일에서 가져 오려면 파일 유형과 대상 테이블을 지정해야합니다.
sqlite> .mode csv <table>
sqlite> .import <filename> <table>
답변
다음과 같은 명령에서 시도하십시오.
cat dump.sql | sqlite3 database.db
이것은 분명히 dump.sql의 SQL 문에서만 작동합니다. CSV를 가져 오는 방법을 잘 모르겠습니다.
답변
SQLite DB가있는 SCRATCH에서 CSV를 테이블로 가져 오는 방법 :
- 웹 사이트에서 SQLite를 가져옵니다.
- 명령 프롬프트에서
sqlite3 <your_db_file_name>
* 빈 파일로 생성됩니다. - 새 데이터베이스에 새 테이블을 만듭니다. 가져 오려면 테이블이 CSV 필드와 일치해야합니다.
- SQL 명령으로이를 수행합니다.
CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);
테이블이 생성되고 열이 파일의 데이터와 일치하면 위의 작업을 수행 할 수 있습니다.
.mode csv <table_name>
.import <filename> <table_name>
답변
sqlite3 .import 명령은 인용 된 문자열에서도 쉼표를 구분 기호로 취급하기 때문에 일반 csv 데이터에는 작동하지 않습니다.
여기에는 셸에서 만든 csv 파일을 다시 가져 오는 것이 포함됩니다.
Create table T (F1 integer, F2 varchar);
Insert into T values (1, 'Hey!');
Insert into T values (2, 'Hey, You!');
.mode csv
.output test.csv
select * from T;
Contents of test.csv:
1,Hey!
2,"Hey, You!"
delete from T;
.import test.csv T
Error: test.csv line 2: expected 2 columns of data but found 3
csv를 Insert 문 목록으로 변환해야합니다. 그렇지 않으면 다른 구분 기호가 작동 할 것입니다.
SuperUser에서 LogParser를 사용하여 csv 파일을 처리하라는 제안을 보았습니다. 이에 대해 살펴 보겠습니다.
답변
(python) 스크립트를 사용하는 것이 좋으면 이것을 자동화하는 python 스크립트가 있습니다 : https://github.com/rgrp/csv2sqlite
이렇게하면 테이블이 자동으로 생성 될뿐만 아니라 몇 가지 기본 유형 추측 및 데이터 캐스팅이 수행됩니다 (예 : 숫자가 무엇인지 알아 내고 열 유형을 “실제”로 설정합니다).
답변
SQLite의 기본 구분 기호는 파이프 “|”입니다.
sqlite> .separator ";"
sqlite> .import path/filename.txt tablename
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010
답변
SQLite는 SQL 구문에서 SQLite 특정 도트 명령 을 허용하기 때문에 매우 유연 합니다 (CLI로 해석 됨). 이는 이와 같은 작업을 수행 할 수 있음을 의미합니다.
다음 sms
과 같은 테이블을 만듭니다 .
# sqlite3 mycool.db '.schema sms'
CREATE TABLE sms (_id integer primary key autoincrement, Address VARCHAR, Display VARCHAR, Class VARCHAR, ServiceCtr VARCHAR, Message VARCHAR, Timestamp TIMESTAMP NOT NULL DEFAULT current_timestamp);
그런 다음 두 파일 :
# echo "1,ADREZZ,DizzPlay,CLAZZ,SMSC,DaTestMessage,2015-01-24 21:00:00">test.csv
# cat test.sql
.mode csv
.header on
.import test.csv sms
SQL 파일을 사용하여 CSV 파일 가져 오기를 테스트하려면 다음을 실행하십시오.
# sqlite3 -csv -header mycool.db '.read test.sql'
결론적으로 이것은 .import
MySQL과 같은 다른 RDB에서 할 수있는 것처럼 SQLite SQL 에서 문을 사용할 수 있음을 의미합니다 LOAD DATA INFILE
. 그러나 이것은 권장되지 않습니다.