Je dois vider un fichier . Sql ou . Csv dans SQLite (j'utilise l'API SQLite3). J'ai seulement trouvé de la documentation pour importer/charger des tables, pas des bases de données entières. En ce moment, quand je tape:
sqlite3Prompt> .import FILENAME TABLE
Je reçois une erreur de syntaxe, car elle attend une table et non une base de données complète.
Pour importer à partir d'un fichier SQL, utilisez les éléments suivants:
sqlite> .read <filename>
Pour importer à partir d'un fichier CSV, vous devez spécifier le type de fichier et la table de destination:
sqlite> .mode csv <table>
sqlite> .import <filename> <table>
Essayez de le faire à partir de la commande comme ceci:
cat dump.sql | sqlite3 database.db
Cela ne fonctionnera évidemment qu'avec les instructions SQL dans dump.sql. Je ne sais pas comment importer un fichier CSV.
Pour passer de SCRATCH avec SQLite DB à l’importation du fichier CSV dans une table:
sqlite3 <your_db_file_name>
* Il sera créé sous la forme d'un fichier vide.CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);
Une fois que vous avez créé la table et que les colonnes correspondent aux données du fichier, vous pouvez procéder comme indiqué ci-dessus ...
.mode csv <table_name>
.import <filename> <table_name>
La commande sqlite3 .import ne fonctionnera pas pour les données csv ordinaires, car elle considère toute virgule comme un séparateur, même dans une chaîne entre guillemets.
Cela inclut l’essai de réimporter un fichier csv créé par le shell:
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
Il semble que nous devions transformer le fichier csv en une liste d'instructions Insert ou un autre délimiteur fonctionnera peut-être.
Sur SuperUser, j’ai suggéré de faire appel à LogParser pour traiter les fichiers csv, je vais examiner cela.
Si vous préférez utiliser un script (python), il existe un script python) qui automatise ce processus à: https://github.com/rgrp/csv2sqlite
Ceci créera automatiquement la table pour vous et vous permettra de deviner des types et de transtyper des données (pour que, par exemple, quelque chose soit un nombre et que le type de colonne soit défini sur "réel").
Rappelez-vous que le délimiteur par défaut pour SQLite est le tuyau "|"
sqlite> .separator ";"
sqlite> .import path/filename.txt tablename
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite01
si vous l’utilisez dans des fenêtres, assurez-vous d’ajouter le chemin de la base de données dans "" et utilisez également une double barre oblique\dans le chemin pour vous assurer que Windows l’a bien compris.
Découvrez les termesql. https://gitorious.org/termsqlhttps://gitorious.org/termsql/pages/Home
Il convertit le texte en SQL sur la ligne de commande. (CSV est juste du texte)
Exemple:
cat textfile | termsql -o sqlite.db
Par défaut, le délimiteur est un espace. Pour le faire fonctionner avec un fichier CSV utilisant des virgules, procédez comme suit:
cat textfile | termsql -d ',' -o sqlite.db
sinon, vous pouvez le faire:
termsql -i textfile -d ',' -o sqlite.db
Par défaut, les noms de colonne "COL0", "COL1" sont générés. Si vous souhaitez utiliser la première ligne pour les noms de colonnes, procédez comme suit:
termsql -i textfile -d ',' -1 -o sqlite.db
Si vous souhaitez définir des noms de colonne personnalisés, procédez comme suit:
termsql -i textfile -d ',' -c 'id,name,age,color' -o sqlite.db
SQLite est extrêmement flexible car il autorise également le spécifique commandes à points de SQLite dans la syntaxe SQL (bien qu'ils soient interprétés par CLI). Cela signifie que vous pouvez faire des choses comme celle-ci.
Créez une table sms
comme ceci:
# 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);
Puis deux fichiers:
# 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
Pour tester l'importation du fichier CSV à l'aide du fichier SQL, exécutez:
# sqlite3 -csv -header mycool.db '.read test.sql'
En conclusion, cela signifie que vous pouvez utiliser l'instruction .import
Dans SQLite SQL, comme dans n'importe quel autre RDB, comme MySQL avec LOAD DATA INFILE
, Etc. Cependant, cela n'est pas recommandé.
Voici comment vous pouvez insérer dans une colonne d'identité:
CREATE TABLE my_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name COLLATE NOCASE);
CREATE TABLE temp_table (name COLLATE NOCASE);
.import predefined/myfile.txt temp_table
insert into my_table (name) select name from temp_table;
myfile.txt est un fichier dans C:\code\db\predefined \
data.db est dans C:\code\db \
myfile.txt contient des chaînes séparées par un caractère de nouvelle ligne.
Si vous souhaitez ajouter plus de colonnes, il est plus facile de les séparer à l'aide du caractère de canal, qui est le caractère par défaut.