.sql 또는 .csv 파일을 SQLite로 가져 오는 방법은 무엇입니까? (SQLite3 API를 사용하고

.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'

결론적으로 이것은 .importMySQL과 같은 다른 RDB에서 할 수있는 것처럼 SQLite SQL 에서 문을 사용할 수 있음을 의미합니다 LOAD DATA INFILE. 그러나 이것은 권장되지 않습니다.