Regarding: What precisely are the "improvements" in handling of CSV inputs?
Gabor, I don't know about "precisely" -- I'll let others on the list tell me where I'm off, but here's my take: A lot of strange things call themselves csv, but the change attempts to make the sqlite3 utility's CSV inputs perform a bit more closely to RFC4180. http://tools.ietf.org/html/rfc4180 http://en.wikipedia.org/wiki/Comma-separated_values#Toward_standardization In particular, during CSV mode import: -- Allow any field to be surrounded by double quote characters without those characters being considered part of the field data. -- Allow fields to contain embedded commas (or other separators) when the field is surrounded by double quote characters. -- Allow fields to span multiple lines if they are surrounded by double quote characters. -- Allow the double quote character to be escaped by having two adjacent double quote characters. (But note that a field consisting solely of two double quote characters still represents an empty string field.) -- On output in CSV mode, surround text fields with double quotes when needed. See check-in [93aa17d866] http://www.sqlite.org/src/info/93aa17d866 (By the way, I believe the sqlite3 command line utility (CLI) was intended to be more of a debug tool than a production component -- but it surely is useful!) For an example of CSV import, if I have file MyStuff.csv whose data is shown below between the barred lines below (words in square brackets [] are just my comments and were not present in the import file): ============================== 1,cat 2,"rat" [quotes are optional unless separator(s) embedded] 3 ,"grey fox" [extra whitespace will be handled differently when affinity is numeric] 4, spacedog [There's a space before and after spacedog -- trust me] 5,o'possum 6,"big, bad, wolf" 7,"two-lined [Fields can span lines] zebra" 8, [Second field empty. (Maybe I forgot to type "Missing lynx")] 9,imperial ("laughing") loon ============================== Now I create a test database. C:\util>sqlite3 test.db SQLite version 3.7.11 2012-03-20 11:35:50 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> /* Define a simple table t, comprised of an integer column and a text column */ sqlite> Create table t ( id integer, animal); sqlite> /* import the data above using csv mode */ sqlite> .mode csv sqlite> .import MyStuff.csv t sqlite> /* Show the table in CSV mode sqlite> select * from t; 1,cat 2,rat 3,"grey fox" 4," spacedog " 5,"o'possum" 6,"big, bad, wolf" 7,"two-lined zebra" 8,"" 9,"imperial (""laughing"") loon" sqlite> sqlite> sqlite> sqlite> /* Try changing the separator and show it again in LIST mode */ sqlite> .separator | sqlite> .mode list sqlite> select * from t; 1|cat 2|rat 3|grey fox 4| spacedog 5|o'possum 6|big, bad, wolf 7|two-lined zebra 8| 9|imperial ("laughing") loon sqlite> Does this answer your questions? _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users