2013-03-10 20 views
7

Ho semplici file di testo che contengono solo testi normali.Carica il contenuto in file di testo nella tabella sqlite?

Mi chiedevo se c'è un modo per caricare il contenuto del testo nella tabella in sqlite.

Quindi forse potrei creare table myTable (nameOfText TEXT, contents TEXT);

E quindi inserire il nome del testo nella prima colonna e il contenuto nella seconda colonna.

Se inserire il nome del file è difficile, caricare il contenuto in una tabella di colonne è altrettanto valido.

Qualsiasi suggerimento sarebbe apprezzato.

Grazie !!

+0

E quale formato ha il file di testo? –

risposta

2

termsql è uno strumento in grado di convertire il testo da un file o l'output di un programma (stdin) al volo in un database SQLite.

termsql -c nameOfText,contents -i input.txt -o myDB.db 

Questo creerà una tabella con le colonne nomeOfText e contenuto. Per ogni riga in input.txt verrà inserita una riga in myDB.db.

Non ci hai detto del nome del delimitatoreOfText e il contesto è separato da. Con defaultql presuppone che lo spazio sia il delimitatore. Ma dovrebbe essere '' per esempio, allora si farebbe qualcosa di simile:

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db 

È possibile ottenere termsql qui: https://gitorious.org/termsql https://freecode.com/projects/termsql

Termsql ha altri casi d'uso, anche. È possibile eseguire istruzioni SQL sul nuovo database in un unico comando. L'esempio seguente crea il database e restituisce la colonna nameOfText sulla riga di comando per tutte le righe in cui la colonna del contenuto contiene la stringa 'test'.

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'" 
+0

I collegamenti sono interrotti - sembra disponibile da [qui] (https: // github.com/tobimensch/termsql) ora. Anche se non capisco perché sia ​​preferibile semplicemente fare 'create table ...; .import ... 'come descritto di seguito, e quindi eseguito come script' sqlite3 myDB.db "" .read to_table.sql "' – JohnSG

15

Diciamo che avete un file di text.txt di formato CSV:

name1,content1 
name2,content2 

Prova i comandi indicati di seguito per importare i dati in test.txt nella vostra tabella

D:\test>sqlite3 test.db 
SQLite version 3.6.23 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table myTable(nameOfText TEXT, contents TEXT); 
sqlite> .separator "," 
sqlite> .import test.txt myTable 
sqlite> select * from myTable; 
name1,content1 
name2,content2 
sqlite> 

Modificare il separatore utilizzato in il tuo file di testo con il comando .separator prima di importare i dati.

+0

'.separator ","' non funzionante –

2

La funzione readfile legge il contenuto di un file e restituisce tale contenuto come BLOB. Questa funzione è disponibile quando si utilizza la shell della riga di comando. Per esempio:

sqlite> CREATE TABLE files(name TEXT, content TEXT); 
sqlite> INSERT INTO files(name,content) VALUES('a.txt',readfile('a.txt')); 

La documentazione per questa funzione e writefile è disponibile presso http://www.sqlite.org/cli.html.

+0

Si noti che le funzioni readfile (X) e writefile (X, Y) sono funzioni di estensione e non sono integrati nella libreria SQLite di base. –

Problemi correlati