Index: main/xbase.lisp
===================================================================
--- main/xbase.lisp	(revision main,7)
+++ main/xbase.lisp	(revision main,8)
@@ -134,8 +134,12 @@
               (t (error "Bad type ~S." type))))))
 
+(defvar *temporary-tables* nil)
+
 (defun sql-create (name descs)
-  (format nil "CREATE TABLE ~A~%   (~{~A~@{,~%    ~A~}~})"
+  (format nil "CREATE ~:[~;TEMP ~]TABLE ~A~%   (~{~A~@{,~%    ~A~}~})~:[~;~%ON COMMIT DROP~]"
+          *temporary-tables*
           name
-          (mapcar 'sql-column descs)))
+          (mapcar 'sql-column descs)
+          (eql *temporary-tables* 1)))
 
 (defgeneric sql-insert (obj))
@@ -210,15 +214,18 @@
   (multiple-value-bind (db-name table-name) (split-name filename)
     (let ((recs (import-dbf filename table-name)))
-      (format t "BEGIN;~%~%~%~%~A;~%~%~%~%"
+      (format t "~A;~4%"
               (slot-value (gethash 'import-struct *dbfs*) 'sql-create))
       (dolist (rec recs)
         (unless (/= (slot-value rec '%deleted) 32)
-          (format t "~A;~%~%" (sql-insert rec))))
-      (format t "~%~%COMMIT;~%"))))
+          (format t "~2&~A;~%" (sql-insert rec)))))))
 
 (defun main ()
-  (when (/= (length *posix-argv*) 2)
-    (format *error-output* "Usage: xbase dbf-file~%")
+  (unless (member (length *posix-argv*) '(2 3))
+    (format *error-output* "Usage: xbase [-t | -tt] dbf-file~%")
     (quit))
-  (do-dbf (second *posix-argv*))
+  (let* ((*temporary-tables* (position (second *posix-argv*) '("-t" "-tt") :test 'string=))
+         (file (if *temporary-tables*
+                   (third *posix-argv*)
+                   (second *posix-argv*))))
+    (do-dbf file))
   (quit))
