IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

Bulk insert dans SQLite


Sujet :

SQLite

  1. #1
    Membre très actif
    Avatar de sroux
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2003
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 162
    Par défaut Bulk insert dans SQLite
    Bonjour,

    Je souhaiterais intégrer un fichier dans une table SQLite créée à la volée.
    L'idée étant de passer par un script PERL et les modules DBI, DBD::SQLite.
    Il s'agit d'un script perl ensuite compilé via PAR ou Perl2EXE.

    En revanche je ne vois pas comment insérer le contenu du fichier simplement via une commande de type bulkinsert.
    En cherchant un peu il existe une commande SQLite permet le chargement d'un fichier dans une table: .import FILE TABLE cependant ce commande s'inscrit dans le cadre de l'utilisation de la ligne de commande et ne convient pas.

    Merci d'avance pour toute info.

    SRoux

  2. #2
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Par défaut
    Bonjour,
    je n'ai pas exactement ta réponse, mais regarde un peu ce code en C que j'ai touvé je ne sais où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    /*
    Written by Fabio Ceconello (fabio@iapyx.com.br), 2008-07-18
    This is Public Domain as SQLite itself, but please keep this header.
    */
     
    #include <stdio.h>
    #include <string.h>
    #include "sqlite3.h"
     
    static const char *help = 
    	"Loads a file into a SQLite BLOB field\n\n"
    	"Usage: loadblob <database> <command> <blob>\n"
    	"\t<database> SQLite file name\n"
    	"\t<comando> SQL command, enclosed in double quotes\n"
    	"\t<blob> file to be load to the BLOB\n"
    	"\n\t The command should be an INSERT or UPDATE, and should contain a ? to mark\n"
    	"\t where to put the blob.\n"
    	"\tExample: INSERT INTO test (id, myblob) VALUES (1, ?)\n"
    	"\tThis will insert a record into the 'test' table, and load the file to myblob (obviously, a BLOB column).";
     
     
    int main(int argc, const char *argv[])
    {
    	if (argc < 4)
    	{
    		printf(help);
    		return 1;
    	}
    	char *blob = 0;
    	int size = 0;
    	{
    		FILE *file = fopen(argv[3], "rb");
    		if (file == 0)
    		{
    			printf("Can't load the BLOB file\n");
    			return 2;
    		}
    		fseek(file, 0, SEEK_END);
    		size = ftell(file);
    		fseek(file, 0, SEEK_SET);
    		blob = new char[size];
    		fread(blob, size, 1, file);
    		fclose(file);
    	}
     
    	sqlite3 *db;
    	if (sqlite3_open(argv[1], &db))
    	{
    		printf("Can't open the SQLite database\n");
    		return 3;
    	}
     
    	const char *sql = argv[2];
     
    	sqlite3_stmt *pStmt;
    	if (sqlite3_prepare(db, sql, -1, &pStmt, 0))
    	{
    		printf("SQL syntax error\n");
    		return 4;
    	}
      sqlite3_bind_blob(pStmt, 1, blob, size, SQLITE_STATIC);
      sqlite3_step(pStmt);
    	sqlite3_finalize(pStmt);
    	sqlite3_close(db);
     
    	delete blob;
    	return 0;
    }
    a+

Discussions similaires

  1. Problème insertion dans une base SQLite
    Par -Nesquick- dans le forum Android
    Réponses: 1
    Dernier message: 21/04/2012, 14h08
  2. Insertion dans une base SQLite sous Android
    Par ensinienne dans le forum Android
    Réponses: 1
    Dernier message: 03/04/2012, 09h19
  3. SQLite création et insertion dans une table
    Par daddou_90 dans le forum Android
    Réponses: 1
    Dernier message: 12/12/2011, 12h49
  4. Réponses: 3
    Dernier message: 13/08/2009, 10h47
  5. Réponses: 2
    Dernier message: 21/03/2007, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo