You are on page 1of 13

10/02/2017 impexp.

c File Reference

Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

impexp.c File Reference

Detailed Description
SQLite extension module for importing/exporting database information from/to SQL source text and export to CSV text.

2007 January 27

The author disclaims copyright to this source code. In place of a legal notice, here is a blessing:

May you do good and not evil. May you find forgiveness for yourself and forgive others. May you share freely, never taking more than you give.

 Usage: 

  SQLite function: 
       SELECT import_sql(filename); 

  C function: 
       int impexp_import_sql(sqlite3 *db, 
                             char *filename); 

       Reads SQL commands from filename and executes them 
       against the current database. Returns the number 
       of changes to the current database. 

  SQLite function: 
       SELECT export_sql(filename, [mode, tablename, ...]); 

  C function: 
       int impexp_export_sql(sqlite3 *db, char *filename, int mode, ...); 

       Writes SQL to filename similar to SQLite's shell 
       ".dump" meta command. Mode selects the output format: 
       Mode 0 (default): dump schema and data using the 
       optional table names following the mode argument. 
       Mode 1: dump data only using the optional table 
       names following the mode argument. 
       Mode 2: dump schema and data using the optional 
       table names following the mode argument; each 
       table name is followed by a WHERE clause, i.e. 
       "mode, table1, where1, table2, where2, ..." 
       Mode 3: dump data only, same rules as in mode 2. 
       Returns approximate number of lines written or 
       ‐1 when an error occurred. 

       Bit 1 of mode:      when 1 dump data only 
       Bits 8..9 of mode:  blob quoting mode 
           0   default 
         256   ORACLE 
         512   SQL Server 
         768   MySQL 

  SQLite function: 
       SELECT export_csv(filename, hdr, prefix1, tablename1, schema1, ...]); 

  C function: 
       int impexp_export_csv(sqlite3 *db, char *filename, int hdr, ...); 
                             [char *prefix1, char *tablename1, 
                             char *schema1, ...] 

       Writes entire tables as CSV to provided filename. A header 
       row is written when the hdr parameter is true. The 
       rows are optionally introduced with a column made up of 
       the prefix (non‐empty string) for the respective table. 
       If "schema" is NULL, "sqlite_master" is used, otherwise 
       specify e.g. "sqlite_temp_master" for temporary tables or 
       "att.sqlite_master" for the attached database "att". 

          CREATE TABLE A(a,b); 
          INSERT INTO A VALUES(1,2); 
          INSERT INTO A VALUES(3,'foo'); 
          CREATE TABLE B(c); 
          INSERT INTO B VALUES('hello'); 
          SELECT export_csv('out.csv', 0, 'aa', 'A', NULL, 'bb', 'B', NULL); 
          ‐‐ CSV output 
          "aa",1,2 
          "aa",3,"foo" 
          "bb","hello" 
          SELECT export_csv('out.csv', 1, 'aa', 'A', NULL, 'bb', 'B', NULL); 
          ‐‐ CSV output 
          "aa","a","b" 
          "aa",1,2 
          "aa",3,"foo" 
          "bb","c" 

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 1/13
10/02/2017 impexp.c File Reference
          "bb","hello" 

  SQLite function: 
       SELECT export_xml(filename, appendflag, indent, 
                         [root, item, tablename, schema]+); 

  C function: 
       int impexp_export_xml(sqlite3 *db, char *filename, 
                             int append, int indent, char *root, 
                             char *item, char *tablename, char *schema); 

       Writes a table as simple XML to provided filename. The 
       rows are optionally enclosed with the "root" tag, 
       the row data is enclosed in "item" tags. If "schema" 
       is NULL, "sqlite_master" is used, otherwise specify 
       e.g. "sqlite_temp_master" for temporary tables or 
       "att.sqlite_master" for the attached database "att". 

          <item> 
           <columnname TYPE="INTEGER|REAL|NULL|TEXT|BLOB">value</columnname> 
           ... 
          </item> 

       e.g. 

          CREATE TABLE A(a,b); 
          INSERT INTO A VALUES(1,2.1); 
          INSERT INTO A VALUES(3,'foo'); 
          INSERT INTO A VALUES('',NULL); 
          INSERT INTO A VALUES(X'010203','<blob>'); 
          SELECT export_xml('out.xml', 0, 2, 'TBL_A', 'ROW', 'A'); 
          ‐‐ XML output 
            <TBL_A> 
              <ROW> 
                <a TYPE="INTEGER">1</a> 
                <b TYPE="REAL">2.1</b> 
              </ROW> 
              <ROW> 
                <a TYPE="INTEGER">3</a> 
                <b TYPE="TEXT">foo</b> 
              </ROW> 
              <ROW> 
                <a TYPE="TEXT"></a> 
                <b TYPE="NULL"></b> 
              </ROW> 
              <ROW> 
                <a TYPE="BLOB">&x01;&x02;&x03;</a> 
                <b TYPE="TEXT">&lt;blob&gt;</b> 
              </ROW> 
            </TBL_A> 

       Quoting of XML entities is performed only on the data, 
       not on column names and root/item tags. 

  SQLite function: 
       SELECT export_json(filename, sql); 

  C function: 
       int impexp_export_json(sqlite3 *db, char *sql, 
                              impexp_putc pfunc, void *parg); 

       Executes arbitrary SQL statements and formats 
       the result in JavaScript Object Notation (JSON). 
       The layout of the result is: 

        object {results, sql} 
         results[] object {columns, rows, changes, last_insert_rowid, error} 
          columns[] 
           object {name, decltype, type }     (sqlite3_column_*) 
          rows[][]                            (sqlite3_column_*) 
          changes                             (sqlite3_changes) 
          last_insert_rowid                   (sqlite3_last_insert_rowid) 
          error                               (sqlite3_errmsg) 
         sql                                  (SQL text) 

       For each single SQL statement in "sql" an object in the 
       "results" array is produced. 

       The function pointer for the output function to 
       "impexp_export_json" has a signature compatible 
       with fputc(3). 

 On Win32 the filename argument may be specified as NULL in order 
 to open a system file dialog for interactive filename selection. 
 

Definition in file impexp.c.#include <sqlite3ext.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stddef.h>

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 2/13
10/02/2017 impexp.c File Reference
#include <unistd.h>
#include "impexp.h"

Go to the source code of this file.

Data Structures
struct  DUMP_DATA
Structure for dump callback. More...
 
struct  json_pfs
JSON output helper structure. More...
 

Defines
#define ISSPACE(c)   ((c) && (strchr(space_chars, (c)) != 0))

Functions
char * one_input_line (FILE *fin)
Read one line of input into dynamically allocated buffer which the caller must free with sqlite3_free(). 
 
int ends_with_semicolon (const char *str, int n)
Test if string ends with a semicolon. 
 
int all_whitespace (const char *str)
Test if string contains entirely whitespace or SQL comment. 
 
int process_input (sqlite3 *db, FILE *fin)
Process contents of FILE pointer as SQL commands. 
 
void quote_func (sqlite3_context *context, int argc, sqlite3_value **argv)
SQLite function to quote SQLite value depending on optional quote mode. 
 
void quote_csv_func (sqlite3_context *context, int argc, sqlite3_value **argv)
SQLite function to quote an SQLite value in CSV format. 
 
void indent_xml_func (sqlite3_context *context, int argc, sqlite3_value **argv)
SQLite function to make XML indentation. 
 
void quote_xml_func (sqlite3_context *context, int argc, sqlite3_value **argv)
SQLite function to quote a string for XML. 
 
void import_func (sqlite3_context *ctx, int nargs, sqlite3_value **args)
SQLite function to read and process SQL commands from a file. 
 
int impexp_import_sql (sqlite3 *db, char *filename)
Reads SQL commands from filename and executes them against the current database. 
 
void indent (DUMP_DATA *dd)
Write indentation to dump. 
 
int table_dump (DUMP_DATA *dd, char **errp, int fmt, const char *query,...)
Execute SQL to dump contents of one table. 
 
void append_free (char **in)
Free dynamically allocated string buffer. 
 
char * append (char **in, char const *append, char quote)
Append a string to dynamically allocated string buffer with optional quoting. 
 
void quote_xml_str (DUMP_DATA *dd, char *str)
Quote string for XML output during dump. 
 
int dump_cb (void *udata, int nargs, char **args, char **cols)
Callback for sqlite3_exec() to dump one data row. 
 
int schema_dump (DUMP_DATA *dd, char **errp, const char *query,...)
Execute SQL on sqlite_master table in order to dump data. 
 
void export_func (sqlite3_context *ctx, int nargs, sqlite3_value **args)
SQLite function for SQL output, see impexp_export_sql. 
 
void export_csv_func (sqlite3_context *ctx, int nargs, sqlite3_value **args)
SQLite function for CSV output, see impexp_export_csv. 
 

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 3/13
10/02/2017 impexp.c File Reference
void export_xml_func (sqlite3_context *ctx, int nargs, sqlite3_value **args)
SQLite function for XML output, see impexp_export_xml. 
 
int impexp_export_sql (sqlite3 *db, char *filename, int mode,...)
Writes SQL to filename similar to SQLite's shell ".dump" meta command. 
 
int impexp_export_csv (sqlite3 *db, char *filename, int hdr,...)
Writes entire tables as CSV to provided filename. 
 
int impexp_export_xml (sqlite3 *db, char *filename, int append, int indnt, char *root, char *item, char *tablename, char *schema)
Writes a table as simple XML to provided filename. 
 
void json_pstr (const char *string, json_pfs *pfs)
Write string using JSON output function. 
 
void json_pstrq (const char *string, json_pfs *pfs)
Quote and write string using JSON output function. 
 
void json_pstrc (const char *string, json_pfs *pfs)
Conditionally quote and write string using JSON output function. 
 
void json_pb64 (const unsigned char *blk, int len, json_pfs *pfs)
Write a blob as base64 string using JSON output function. 
 
int json_output (sqlite3 *db, char *sql, impexp_putc pfunc, void *parg)
Execute SQL and write output as JSON. 
 
void export_json_func (sqlite3_context *ctx, int nargs, sqlite3_value **args)
SQLite function for JSON output, see impexp_export_json. 
 
int impexp_export_json (sqlite3 *db, char *sql, impexp_putc pfunc, void *parg)
Executes arbitrary SQL statements and formats the result in JavaScript Object Notation (JSON). 
 
int sqlite3_extension_init (sqlite3 *db, char **errmsg, const sqlite3_api_routines *api)
Initializer for SQLite extension load mechanism. 
 
int impexp_init (sqlite3 *db)
Registers the SQLite functions. 
 

Variables
const char space_chars [] = " \f\n\r\t\v"

Define Documentation
#define ISSPACE( c  )    ((c) && (strchr(space_chars, (c)) != 0))
  Definition at line 219 of file impexp.c.

Function Documentation
int all_whitespace( const char *   str)  [static]
Test if string contains entirely whitespace or SQL comment.

Parameters:
str  string to be tested

Returns:
  true or false

Definition at line 301 of file impexp.c.

References ISSPACE.

Referenced by process_input().

char* append( char **    in,
char const *   append,
char    quote
)  [static]
  Append a string to dynamically allocated string buffer with optional quoting.

Parameters:
in  input string pointer

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 4/13
10/02/2017 impexp.c File Reference

append  string to append
quote  quote character or NUL

Returns:
new string to be free'd with append_free()

Definition at line 1034 of file impexp.c.

References append().

Referenced by append(), and impexp_export_xml().

void append_free( char **   in)  [static]
Free dynamically allocated string buffer.

Parameters:
 
in  input string pointer

Definition at line 1013 of file impexp.c.

int dump_cb( void *    udata,
int    nargs,
char **   args,
char **   cols
)  [static]
Callback for sqlite3_exec() to dump one data row.

Parameters:
udata  information structure for dump
nargs  number of columns
args  column data
cols  column labels
  Returns:
0 to continue, 1 to abort

Definition at line 1151 of file impexp.c.

References append(), append_free(), DUMP_DATA::db, DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out,
DUMP_DATA::quote_mode, table_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.

Referenced by schema_dump().

int ends_with_semicolon( const char *   str,
int    n
)  [static]
Test if string ends with a semicolon.

Parameters:
str  string to be tested
n  length of string

  Returns:
true or false

Definition at line 286 of file impexp.c.

References ISSPACE.

Referenced by process_input().

void export_csv_func( sqlite3_context *   ctx,
int    nargs,
sqlite3_value **    args
)  [static]
  SQLite function for CSV output, see impexp_export_csv.

Parameters:
ctx  SQLite function context
nargs  number of arguments
args  argument vector

Definition at line 1596 of file impexp.c.

References DUMP_DATA::db, DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out, DUMP_DATA::quote_mode,
schema_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 5/13
10/02/2017 impexp.c File Reference

Referenced by sqlite3_extension_init().

void export_func( sqlite3_context *   ctx,
int    nargs,
sqlite3_value **    args
)  [static]
SQLite function for SQL output, see impexp_export_sql.

Parameters:
ctx  SQLite function context
nargs  number of arguments
args  argument vector
 
Definition at line 1499 of file impexp.c.

References DUMP_DATA::db, DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out, DUMP_DATA::quote_mode,
schema_dump(), table_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.

Referenced by sqlite3_extension_init().

void export_json_func( sqlite3_context *   ctx,
int    nargs,
sqlite3_value **    args
)  [static]
SQLite function for JSON output, see impexp_export_json.

Parameters:
ctx  SQLite function context
nargs  number of arguments
  args  argument vector

Definition at line 2405 of file impexp.c.

References impexp_putc, and json_output().

Referenced by sqlite3_extension_init().

void export_xml_func( sqlite3_context *   ctx,
int    nargs,
sqlite3_value **    args
)  [static]
SQLite function for XML output, see impexp_export_xml.

Parameters:
ctx  SQLite function context
nargs  number of arguments
args  argument vector
 
Definition at line 1690 of file impexp.c.

References DUMP_DATA::db, indent(), DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out, DUMP_DATA::quote_mode,
quote_xml_str(), schema_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.

Referenced by sqlite3_extension_init().

int impexp_export_csv( sqlite3 *   db,
char *    filename,
int    hdr,
...   

  Writes entire tables as CSV to provided filename.

A header row is written when the hdr parameter is true. The rows are optionally introduced with a column made up of the prefix (non­empty string)
for the respective table. If "schema" is NULL, "sqlite_master" is used, otherwise specify e.g. "sqlite_temp_master" for temporary tables or
"att.sqlite_master" for the attached database "att".

Parameters:
db  SQLite database pointer
filename  name of output file
hdr  write header lines when true
...  tuples of prefix, table name, schema name

Returns:
number of output lines

Example:

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 6/13
10/02/2017 impexp.c File Reference

   CREATE TABLE A(a,b); 
   INSERT INTO A VALUES(1,2); 
   INSERT INTO A VALUES(3,'foo') 
   CREATE TABLE B(c); 
   INSERT INTO B VALUES('hello'); 
   SELECT export_csv('out.csv', 0, 'aa', 'A', NULL, 'bb', 'B', NULL); 
   ‐‐ CSV output 
   "aa",1,2 
   "aa",3,"foo" 
   "bb","hello" 
   SELECT export_csv('out.csv', 1, 'aa', 'A', NULL, 'bb', 'B', NULL); 
   ‐‐ CSV output 
   "aa","a","b" 
   "aa",1,2 
   "aa",3,"foo" 
   "bb","c" 
   "bb","hello" 
 

Definition at line 1890 of file impexp.c.

References DUMP_DATA::db, DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out, DUMP_DATA::quote_mode,
schema_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.

int impexp_export_json( sqlite3 *    db,
char *    sql,
impexp_putc   pfunc,
void *    parg

Executes arbitrary SQL statements and formats the result in JavaScript Object Notation (JSON).

Parameters:
db  SQLite database pointer
sql  SQL to be executed
pfunc  pointer to output function
parg  argument for output function

Returns:
SQLite error code

The layout of the result output is:

    object {results, sql} 
    results[] object {columns, rows, changes, last_insert_rowid, error} 
      columns[] 
        object {name, decltype, type }    (sqlite3_column_*) 
      rows[][]                            (sqlite3_column_*) 
      changes                             (sqlite3_changes) 
      last_insert_rowid                   (sqlite3_last_insert_rowid) 
      error                               (sqlite3_errmsg) 
    sql                                   (SQL text) 
 

For each single SQL statement in "sql" an object in the "results" array is produced.

Definition at line 2458 of file impexp.c.

References impexp_putc, and json_output().

int impexp_export_sql( sqlite3 *   db,
char *    filename,
int    mode,
...   

  Writes SQL to filename similar to SQLite's shell ".dump" meta command.

Mode selects the output format.

Parameters:
db  SQLite database pointer
filename  name of output file
mode  selects output format
...  optional table names or tuples of table name, and where­clause depending on mode parameter

Returns:
approximate number of lines written or ­1 when an error occurred

Mode 0 (default): dump schema and data using the optional table names following the mode argument.
Mode 1: dump data only using the optional table names following the mode argument.
Mode 2: dump schema and data using the optional table names following the mode argument; each table name is followed by a WHERE clause, i.e.
"mode, table1, where1, table2, where2, ..."
Mode 3: dump data only, same rules as in mode 2.

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 7/13
10/02/2017 impexp.c File Reference

Other flags in mode:

       Bit 1 of mode:      when 1 dump data only 
       Bits 8..9 of mode:  blob quoting mode 

           0   default 
         256   ORACLE 
         512   SQL Server 
         768   MySQL 
 

Definition at line 1804 of file impexp.c.

References DUMP_DATA::db, DUMP_DATA::nlines, DUMP_DATA::out, schema_dump(), table_dump(), DUMP_DATA::where, and
DUMP_DATA::with_schema.

int impexp_export_xml( sqlite3 *   db,
char *    filename,
int    append,
int    indent,
char *    root,
char *    item,
char *    tablename,
char *    schema

Writes a table as simple XML to provided filename.

The rows are optionally enclosed with the "root" tag, the row data is enclosed in "item" tags. If "schema" is NULL, "sqlite_master" is used,
otherwise specify e.g. "sqlite_temp_master" for temporary tables or "att.sqlite_master" for the attached database "att".

Parameters:
db  SQLite database pointer
filename  name of output file
append  if true, append to existing output file
indent  number of blanks to indent output
root  optional tag use to enclose table output
item  tag to use per row
tablename  table to be output
schema  optional schema or NULL

Returns:
number of output lines

Layout of an output row:
  <item> 
   <columnname TYPE="INTEGER|REAL|NULL|TEXT|BLOB">value</columnname> 
   ... 
  </item> 
 

Example:

    CREATE TABLE A(a,b); 
  INSERT INTO A VALUES(1,2.1); 
  INSERT INTO A VALUES(3,'foo'); 
  INSERT INTO A VALUES('',NULL); 
  INSERT INTO A VALUES(X'010203','<blob>'); 
  SELECT export_xml('out.xml', 0, 2, 'TBL_A', 'ROW', 'A'); 
  ‐‐ XML output 
    <TBL_A> 
       <ROW> 
          <a TYPE="INTEGER">1</a> 
          <b TYPE="REAL">2.1</b> 
       </ROW> 
       <ROW> 
          <a TYPE="INTEGER">3</a> 
          <b TYPE="TEXT">foo</b> 
       </ROW> 
       <ROW> 
          <a TYPE="TEXT"></a> 
          <b TYPE="NULL"></b> 
       </ROW> 
       <ROW> 
          <a TYPE="BLOB">&x01;&x02;&x03;</a> 
          <b TYPE="TEXT">&lt;blob&gt;</b> 
       </ROW> 
     </TBL_A> 
 

Quoting of XML entities is performed only on the data, not on column names and root/item tags.

Definition at line 1974 of file impexp.c.

References append(), DUMP_DATA::db, indent(), DUMP_DATA::indent, DUMP_DATA::nlines, DUMP_DATA::out,
DUMP_DATA::quote_mode, quote_xml_str(), schema_dump(), DUMP_DATA::where, and DUMP_DATA::with_schema.
http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 8/13
10/02/2017 impexp.c File Reference

int impexp_import_sql( sqlite3 *   db,
char *    filename

Reads SQL commands from filename and executes them against the current database.

Returns the number of changes to the current database.

Parameters:
db  SQLite database pointer
  filename  name of input file

Returns:
number of changes to database

Definition at line 869 of file impexp.c.

References process_input().

int impexp_init( sqlite3 *   db) 
Registers the SQLite functions.

Parameters:
db  SQLite database pointer

Returns:
SQLite error code

Registered functions:

    import_sql(filename) 
  export_sql(filename, [mode, tablename, ...]) 
  export_csv(filename, hdr, prefix1, tablename1, schema1, ...) 
  export_xml(filename, appendflg, indent, [root, item, tablename, schema]+) 
  export_json(filename, sql) 
 

On Win32 the filename argument may be specified as NULL in order to open a system file dialog for interactive filename selection.

Definition at line 2521 of file impexp.c.

References sqlite3_extension_init().

void import_func( sqlite3_context *   ctx,
int    nargs,
sqlite3_value **    args
)  [static]
SQLite function to read and process SQL commands from a file.

Parameters:
ctx  SQLite function context
nargs  number of arguments
  args  argument vector

Definition at line 822 of file impexp.c.

References process_input().

Referenced by sqlite3_extension_init().

void indent( DUMP_DATA *   dd)  [static]
Write indentation to dump.

Parameters:
dd  information structure for dump
 
Definition at line 932 of file impexp.c.

References DUMP_DATA::indent, and DUMP_DATA::out.

Referenced by export_xml_func(), and impexp_export_xml().

void indent_xml_func( sqlite3_context *   context,
int    argc,
sqlite3_value **    argv
)  [static]
  SQLite function to make XML indentation.

Parameters:
http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 9/13
10/02/2017 impexp.c File Reference

context  SQLite function context
argc  number of arguments
argv  argument vector

Definition at line 629 of file impexp.c.

Referenced by sqlite3_extension_init().

int json_output( sqlite3 *    db,
char *    sql,
impexp_putc   pfunc,
void *    parg
)  [static]
Execute SQL and write output as JSON.

Parameters:
db  SQLite database pointer
sql  SQL text
pfunc  JSON output function
parg  argument for output function
 
Returns:
SQLite error code

Definition at line 2261 of file impexp.c.

References impexp_putc, json_pb64(), json_pstr(), json_pstrc(), json_pstrq(), json_pfs::parg, and json_pfs::pfunc.

Referenced by export_json_func(), and impexp_export_json().

void json_pb64( const unsigned char *   blk,
int    len,
json_pfs *    pfs
)  [static]
Write a blob as base64 string using JSON output function.

Parameters:
blk  pointer to blob
len  length of blob
  pfs  JSON output function

Definition at line 2208 of file impexp.c.

References impexp_putc, json_pstr(), json_pfs::parg, and json_pfs::pfunc.

Referenced by json_output().

void json_pstr( const char *   string,
json_pfs *    pfs
)  [static]
Write string using JSON output function.

Parameters:
string  string to be written
pfs  JSON output function
 
Definition at line 2053 of file impexp.c.

References json_pfs::parg, and json_pfs::pfunc.

Referenced by json_output(), json_pb64(), json_pstrc(), and json_pstrq().

void json_pstrc( const char *   string,
json_pfs *    pfs
)  [static]
Conditionally quote and write string using JSON output function.

Parameters:
string  string to be written
pfs  JSON output function
 
Definition at line 2191 of file impexp.c.

References json_pstr(), and json_pstrq().

Referenced by json_output().

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 10/13
10/02/2017 impexp.c File Reference
void json_pstrq( const char *   string,
json_pfs *    pfs
)  [static]
Quote and write string using JSON output function.

Parameters:
string  string to be written
pfs  JSON output function
 
Definition at line 2068 of file impexp.c.

References impexp_putc, json_pstr(), json_pfs::parg, and json_pfs::pfunc.

Referenced by json_output(), and json_pstrc().

char* one_input_line( FILE *   fin)  [static]
Read one line of input into dynamically allocated buffer which the caller must free with sqlite3_free().

Parameters:
fin  FILE pointer

  Returns:
dynamically allocated input line

Definition at line 229 of file impexp.c.

Referenced by process_input().

int process_input( sqlite3 *   db,
FILE *    fin
)  [static]
Process contents of FILE pointer as SQL commands.

Parameters:
db  SQLite database to work on
fin  input FILE pointer

  Returns:
number of errors

Definition at line 341 of file impexp.c.

References all_whitespace(), ends_with_semicolon(), ISSPACE, and one_input_line().

Referenced by impexp_import_sql(), and import_func().

void quote_csv_func( sqlite3_context *   context,
int    argc,
sqlite3_value **    argv
)  [static]
SQLite function to quote an SQLite value in CSV format.

Parameters:
context  SQLite function context
argc  number of arguments
 
argv  argument vector

Definition at line 540 of file impexp.c.

Referenced by sqlite3_extension_init().

void quote_func( sqlite3_context *   context,
int    argc,
sqlite3_value **    argv
)  [static]
  SQLite function to quote SQLite value depending on optional quote mode.

Parameters:
context  SQLite function context
argc  number of arguments
argv  argument vector

Layout of arguments:

argv[0] ­ value to be quoted
argv[1] ­ value of quote mode (optional)

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 11/13
10/02/2017 impexp.c File Reference

Definition at line 420 of file impexp.c.

Referenced by sqlite3_extension_init().

void quote_xml_func( sqlite3_context *   context,
int    argc,
sqlite3_value **    argv
)  [static]
SQLite function to quote a string for XML.

Parameters:
context  SQLite function context
argc  number of arguments
 
argv  argument vector

Definition at line 653 of file impexp.c.

Referenced by sqlite3_extension_init().

void quote_xml_str( DUMP_DATA *   dd,
char *    str
)  [static]
Quote string for XML output during dump.

Parameters:
dd  information structure for dump
str  string to be output
 
Definition at line 1104 of file impexp.c.

References DUMP_DATA::out.

Referenced by export_xml_func(), and impexp_export_xml().

int schema_dump( DUMP_DATA *   dd,
char **    errp,
const char *    query,
...   
)  [static]
Execute SQL on sqlite_master table in order to dump data.

Parameters:
dd  information structure for dump
errp  pointer receiving error message
query  SQL for sqlite3_*printf()
...  argument list
 
Returns:
SQLite error code

Definition at line 1455 of file impexp.c.

References DUMP_DATA::db, and dump_cb().

Referenced by export_csv_func(), export_func(), export_xml_func(), impexp_export_csv(), impexp_export_sql(), and impexp_export_xml().

int sqlite3_extension_init( sqlite3 *    db,
char **    errmsg,
const sqlite3_api_routines *   api

Initializer for SQLite extension load mechanism.

Parameters:
db  SQLite database pointer
errmsg  pointer receiving error message
api  SQLite API routines
 
Returns:
SQLite error code

Definition at line 2477 of file impexp.c.

References export_csv_func(), export_func(), export_json_func(), export_xml_func(), import_func(), indent_xml_func(), quote_csv_func(),
quote_func(), and quote_xml_func().

int table_dump( DUMP_DATA *   dd,

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 12/13
10/02/2017 impexp.c File Reference
char **    errp,
int    fmt,
const char *    query,
...   
)  [static]
Execute SQL to dump contents of one table.

Parameters:
dd  information structure for dump
errp  pointer receiving error message
fmt  if true, use sqlite3_*printf() on SQL
query  SQL text to perform dump of table
...  optional arguments
 
Returns:
SQLite error code

Definition at line 952 of file impexp.c.

References DUMP_DATA::db, DUMP_DATA::nlines, DUMP_DATA::out, and DUMP_DATA::quote_mode.

Referenced by dump_cb(), export_func(), and impexp_export_sql().

Variable Documentation
const char space_chars[] = " \f\n\r\t\v" [static]
  Definition at line 217 of file impexp.c.

Generated on 1 Dec 2016 by doxygen.
Contact: chw@ch­werner.de

http://www.ch­werner.de/sqliteodbc/html/impexp_8c.html 13/13

You might also like