2016-06-22 5 views
0

sqlite3 셸 명령 .import를 사용하여 탭으로 구분 된 파일을 내 데이터베이스로로드하려고합니다.Java에서 .import cmd를 실행하는 SQLite

쉘에서 명령을 실행해도 문제가 없습니다!

명령을 포함한 쉘 스크립트를 작성하고 Java에서 실행해도 아무런 문제가 없습니다!

#! /bin/bash 
# Script for loading a specific file ($1) into a SQLite DBS table ($2) 
{ 
    sqlite3 database.db -cmd ".mode tab" -cmd ".import $1 $2" -cmd ".quit" & 
} 2> /dev/null 
exit 0 

Java에서 직접 명령을 실행하려면 어떻게해야합니까? 여기 내가 무엇을 시도했다입니다 :하지만 어떻게 든 아무것도 데이터베이스

String[] cmd={"sqlite3","database.db -cmd \".mode tab\" -cmd \".import\" "+file.getPath()+" "+table+" -cmd \".quit\""}; 
Runtime.getRuntime().exec(cmd); 

답변

0

내가 sqlite3를 쉘 문서에서 "-cmd"옵션을 찾을 수없는에로드되지 않습니다 : http://www.sqlite.org/cli.html합니다.

sqlite3 database.db -cmd ".mode tab" -cmd ".import data.in Test" -cmd ".quit" 

오류가보고됩니다 :

./sqlite3: Error: too many options: ".mode tab" 
Use -help for a list of options. 

는 SQLite는 쉘에서 여러 명령을 실행하려면, 내가 "하나 개의 파일에있는 모든 명령을 작성하고를 사용하는 것이 당신이 제공하는 쉘 스크립트를 시도했다. 읽기 "명령. 예를 들어, cmd.list의 명령을 쓰기

.mode tabs 
.import data.in Test 
.quit 

그런 다음 SQLite는 쉘 명령을 실행

sqlite3 database.db ".read cmd.list" 

자바 코드 :

String[] cmd = {"sqlite3", "database.db", ".read cmd.list"}; 
Runtime.getRuntime().exec(cmd); 
1

이중별로 그룹화 명령을 실행하십시오 -인용 부호.

sqlite3 database.db ".mode tab" ".import $1 $2" 
+0

실제 코드를 입력하십시오. –

+0

이것이 내 문제를 해결했습니다. 나는'sqlite3 db ".mode csv test; .import $ f test;"'를 시도하고 있었고 작동하지 않았다 (왜 그런지 아십니까?). 그런 다음''sqlite3 db ".mode csv test" ".import $ f test"'를 사용했습니다. –

관련 문제