This code is only partially baked, but it's working for me at the moment. I'm using my multi-target changes to generate both a LaTeX description of the values as well as SQL insert statements in separate noweb chunks. The code leaves a spare blank line in place of the header and cannot handle more than one header line, but it's all I need...
Jason (defun ejr/orgtbl-to-sqlinsert (table params) "Convert the orgtbl-mode TABLE to SQL insert statements. TABLE is a list, each entry either the symbol `hline' for a horizontal separator line, or a list of fields for that line. PARAMS is a property list of parameters that can influence the conversion. Supports all parameters from `orgtbl-to-generic'. Most important for SQL are: :splice When set to t, return only insert statements, don't wrap them in a transaction. Default is nil. :sqlname The name of the database table; defaults to the name of the target region. :tstart, :tend The strings used to begin and commit the transaction. :fmt A format to be used to wrap the field value, should contain %s for the original field value. The default wraps the value in the non-standard [] quote marks but does not protect against ] characters in the header name. The format may also be a function that formats its one argument. :hfmt A function that gathers the []-quoted header names into a dynamically scoped variable HDRLIST. The general parameters :skip and :skipcols have already been applied when this function is called." (let* (hdrlist (alignment (mapconcat (lambda (x) (if x "r" "l")) org-table-last-alignment "")) (params2 (list :sqlname name :tstart "BEGIN TRANSACTION;" :tend "COMMIT;" :fmt "[%s]" :hfmt (lambda (f) (push (concat "[" f "]") hdrlist) "") :hlfmt (lambda (lst) nil) :lstart (lambda () (concat "INSERT INTO " (plist-get params :sqlname) "( " (mapconcat 'identity (reverse hdrlist) ", ") " ) VALUES ( ")) :lend " );" :sep " , " :hline nil))) (orgtbl-to-generic table (org-combine-plists params2 params)))) _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode