Re: [O] sqlite im-/export

2013-05-18 Thread Eric Schulte
Oliver Večerník  writes:

>> I may have missed you spelling this out in a previous email, but can you
>> not import Org tables directly into sqlite code blocks?
>>
>> Evaluate this again after evaluating the second block.
>> #+BEGIN_SRC sqlite :csv :db test.sqlite
>>   SELECT * from t1;
>> #+END_SRC
>
> This works like a charm, thanks again.
>
> But where is :csv or :db documented?  The info manual says to look at worg, 
> but
> there is no `ob-doc-sqlite' documentation link.  Are there any more
> specific arguments to sqlite?
>
> There is no `ob-doc-sh' either, but maybe there are no specific arguments
> for shell.

Sadly many of the languages are under documented.  That could be a good
thing, in that it generally takes less time to add a new language
specific header argument than it does to document one, but it is
obviously also a bad thing when header arguments aren't used because
no-one knows they exist.

In general browsing the source code of the lisp/ob-lang.el files (e.g.,
lisp/ob-sqlite.el) is the best way to find out what header arguments are
used.  For example at the top of ob-sqlite you'll find the following.

(defvar org-babel-header-args:sqlite
  '((db. :any)
(header. :any)
(echo  . :any)
(bail  . :any)
(csv   . :any)
(column. :any)
(html  . :any)
(line  . :any)
(list  . :any)
(separator . :any)
(nullvalue . :any))
  "Sqlite specific header args.")

In my opinion the source code of the language-specific files is
readable, but of course I'm not a good judge as I wrote most of it.  We
definitely need more volunteers to add documentation on worg.

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



Re: [O] sqlite im-/export

2013-05-17 Thread Oliver Večerník
> I may have missed you spelling this out in a previous email, but can you
> not import Org tables directly into sqlite code blocks?
>
> Evaluate this again after evaluating the second block.
> #+BEGIN_SRC sqlite :csv :db test.sqlite
>   SELECT * from t1;
> #+END_SRC

This works like a charm, thanks again.

But where is :csv or :db documented?  The info manual says to look at worg, but
there is no `ob-doc-sqlite' documentation link.  Are there any more
specific arguments to sqlite?

There is no `ob-doc-sh' either, but maybe there are no specific arguments
for shell.

-- 
Best,
Oliver




Re: [O] sqlite im-/export

2013-05-17 Thread Eric Schulte
Oliver Večerník  writes:

>> 2. use ":results drawer", and explicitly formatting the results in
>>Org-mode syntax w/awk
>
> Unfortunately this doesn't work.  The output is always printed to the
> "#+RESULTS:" section and not piped through awk.  But working with
> ":results raw" works perfect for me.  I can even produce a separator
> line in the table now with =print "|-"=.
>
> The only question left, how to import org tables "on the fly" to sqlite,
> to keep everthing in Org mode.  This would also be an interesting
> candidate for an "ob-doc-sh.org" starter I guess.

I may have missed you spelling this out in a previous email, but can you
not import Org tables directly into sqlite code blocks?

Evaluate this again after evaluating the second block.
#+BEGIN_SRC sqlite :csv :db test.sqlite
  SELECT * from t1;
#+END_SRC

#+RESULTS:
| 1 | apple pie |
| 2 | sugar |

A manually created Org-mode block.

#+name: manual
| 3 | rhubarb |
| 4 | butter  |

#+BEGIN_SRC sqlite :csv :var data=manual :db test.sqlite :results silent
  .separator ","
  .import $data t1
#+END_SRC

-- 
Eric Schulte
http://cs.unm.edu/~eschulte


Re: [O] sqlite im-/export

2013-05-16 Thread Oliver Večerník
> 2. use ":results drawer", and explicitly formatting the results in
>Org-mode syntax w/awk

Unfortunately this doesn't work.  The output is always printed to the
"#+RESULTS:" section and not piped through awk.  But working with
":results raw" works perfect for me.  I can even produce a separator
line in the table now with =print "|-"=.

The only question left, how to import org tables "on the fly" to sqlite,
to keep everthing in Org mode.  This would also be an interesting
candidate for an "ob-doc-sh.org" starter I guess.

-- 
Cheers,
Oliver




Re: [O] sqlite im-/export

2013-05-16 Thread Oliver Večerník
Eric Schulte  writes:
> In that case I'd suggest either
>
> 1. adding :separator support to ob-sh.el, so that you can specify a
>different results separator to be passed to
>`org-babel-import-elisp-from-file'
>
> or
>
> 2. use ":results drawer", and explicitly formatting the results in
>Org-mode syntax w/awk

I'm faster with your second suggestion.  Thanks for your hint and for
this wonderful extension to Org mode!

-- 
Cheers,
Oliver




Re: [O] sqlite im-/export

2013-05-16 Thread Eric Schulte
Oliver Večerník  writes:

> Eric Schulte  writes:
>> What about
>>
>> #+BEGIN_SRC sqlite :csv :db test.sqlite
>>   SELECT * from t1;
>> #+END_SRC
>>
>> #+RESULTS:
>> | 1 | apple pie |
>> | 2 | sugar |
>
> I needed some calculations and format tweaking with awk which I piped
> the results.  That is why I choose the shell.  In this case this is not
> possible.

In that case I'd suggest either

1. adding :separator support to ob-sh.el, so that you can specify a
   different results separator to be passed to
   `org-babel-import-elisp-from-file'

or

2. use ":results drawer", and explicitly formatting the results in
   Org-mode syntax w/awk

Cheers,

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



Re: [O] sqlite im-/export

2013-05-16 Thread Oliver Večerník
Eric Schulte  writes:
> What about
>
> #+BEGIN_SRC sqlite :csv :db test.sqlite
>   SELECT * from t1;
> #+END_SRC
>
> #+RESULTS:
> | 1 | apple pie |
> | 2 | sugar |

I needed some calculations and format tweaking with awk which I piped
the results.  That is why I choose the shell.  In this case this is not
possible.

-- 
Best,
Oliver




Re: [O] sqlite im-/export

2013-05-16 Thread Eric Schulte
Oliver Večerník  writes:

> Hi,
>
> I've got a small test case which I believe is a bug:
>
> $ cat t1.sql
> PRAGMA foreign_keys=OFF;
> BEGIN TRANSACTION;
> CREATE TABLE t1(id integer,product text);
> INSERT INTO "t1" VALUES(1,'apple pie');
> INSERT INTO "t1" VALUES(2,'sugar');
> COMMIT;
> sqlite3 test.sqlite < t1.sql
>
> #+BEGIN_SRC sh
> echo "ID|product"
> sqlite3 test.sqlite "
>   SELECT * from t1;
> "
> #+END_SRC
>
> #+RESULTS:
> | ID | product | |
> |  1 | apple   | pie |
> |  2 | sugar   | |
>

What about

#+BEGIN_SRC sqlite :csv :db test.sqlite
  SELECT * from t1;
#+END_SRC

#+RESULTS:
| 1 | apple pie |
| 2 | sugar |

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



[O] sqlite im-/export

2013-05-16 Thread Oliver Večerník
Hi,

I've got a small test case which I believe is a bug:

$ cat t1.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE t1(id integer,product text);
INSERT INTO "t1" VALUES(1,'apple pie');
INSERT INTO "t1" VALUES(2,'sugar');
COMMIT;
sqlite3 test.sqlite < t1.sql

#+BEGIN_SRC sh
echo "ID|product"
sqlite3 test.sqlite "
  SELECT * from t1;
"
#+END_SRC

#+RESULTS:
| ID | product | |
|  1 | apple   | pie |
|  2 | sugar   | |

Why are there three columns exported?  Tested with Org-mode version
8.0.3 (release_8.0.3-114-gab3f45 @ /home/user/org-mode/lisp/) on GNU
Emacs 24.3.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.6.4) of
2013-05-13 on myhost?


Is it also possible to produce a separator line in the results table?  I
tried a couple of variations, but nothing worked:

echo "|-"
echo "-+"
echo "|-+|"


I have a couple of csv tables now which are imported with a src block
like this:

#+BEGIN_SRC sqlite :db test.sqlite :exports none :results silent
  PRAGMA foreign_keys=off;
  DROP TABLE IF EXISTS t1;
  CREATE TABLE t1(id INTEGER, product TEXT);
  .import t1.csv t1
#+END_SRC

But it would be really nice to maintain these data in org tables and
convert them on fly maybe just in memory.  I couldn't figure out how to
achieve this.  Has anybody a sample?

-- 
Best,
Oliver