Thanks, will have a look at that as well. In my particular situation though I wouldn't want the auto data-type detection as that will slow things down and I will always know what the table fields affinities should be. Is there a way to use the other features, but not this one, say if the table is already there?
RBS On Fri, May 31, 2013 at 11:21 PM, Roger Binns <rog...@rogerbinns.com> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 31/05/13 05:34, Bart Smissaert wrote: > > Importing a. csv file via the. import command of sqlite3.exe. As the > > first line holds the field names I want to skip that. There is no > > problem achieving this in code, but could I do this purely via sqlite3 > > commands? > > You can also use the enhanced shell in APSW (Python wrapper). You don't > need to use or write any Python and can just execute it for the import. > > Of particular use is that it has a .autoimport command which automatically > sets up the correct column names. It also deduces the type in each column > so for example phone numbers won't be mangled to integers, and dates will > be "fixed" automatically determining if they are US or correct format. It > also automatically works out separators (eg csv, tabs, pipes). > > http://apidoc.apsw.googlecode.com/hg/shell.html > > sqlite> .help autoimport > > .autoimport FILENAME ?TABLE? Imports filename creating a table and > automatically working out separators > and data types (alternative to .import > command) > > The import command requires that you precisely pre-setup the table > and schema, and set the data separators (eg commas or tabs). In > many cases this information can be automatically deduced from the > file contents which is what this command does. There must be at > least two columns and two rows. > > If the table is not specified then the basename of the file will be > used. > > Additionally the type of the contents of each column is also deduced > - - for example if it is a number or date. Empty values are turned > into nulls. Dates are normalized into YYYY-MM-DD format and > DateTime are normalized into ISO8601 format to allow easy sorting > and searching. 4 digit years must be used to detect dates. US > (swapped day and month) versus rest of the world is also detected > providing there is at least one value that resolves the ambiguity. > > Care is taken to ensure that columns looking like numbers are only > treated as numbers if they do not have unnecessary leading zeroes or > plus signs. This is to avoid treating phone numbers and similar > number like strings as integers. > > This command can take quite some time on large files as they are > effectively imported twice. The first time is to determine the > format and the types for each column while the second pass actually > imports the data. > > Roger > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.12 (GNU/Linux) > > iEYEARECAAYFAlGpIoEACgkQmOOfHg372QRSqwCg3WTRwifRKC+tK55BmTbomVyo > PHsAnR8v79nKkpVZ7WYWydeTYxsHbZoE > =c95H > -----END PGP SIGNATURE----- > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users