Changeset main,2
- Timestamp:
- 10/03/2007 05:22:12 AM (19 years ago)
- branch-nick:
- xbase
- revision id:
- dsowen@fugue88.ws-20071003052212-1hkdi6br2hfdiyzl
- File:
-
- 1 edited
-
main/xbase.lisp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
main/xbase.lisp
r1 r2 31 31 :initial-element 0))) 32 32 (read-sequence v stream) 33 (string-trim '(#\Nul ) (map 'string #'code-char v))))33 (string-trim '(#\Nul #\Space) (map 'string #'code-char v)))) 34 34 (:method ((type (eql 'date)) stream &optional format) 35 35 (assert (stringp format)) … … 130 130 ,@(mapcar #'slot-from-field descs))) 131 131 132 (defun sql-column (desc) 133 (with-slots (name type size precision) desc 134 (format nil "~A ~A" 135 name 136 (cond 137 ((string= type "C") 138 (format nil "VARCHAR(~A)" size)) 139 ((string= type "N") 140 (if (= precision 0) 141 (cond 142 ((< size 10) "INTEGER") 143 ((< size 19) "BIGINT") 144 (t "NUMERIC(~A)" size)) 145 (format nil "NUMERIC(~A,~A)" (1- size) precision))) 146 ((string= type "D") 147 "DATE") 148 ((string= type "M") 149 (warn "MEMOs aren't implemented yet.") 150 "NUMERIC(10)") 151 (t (error "Bad type ~S." type)))))) 152 153 (defun sql-create (name descs) 154 (format nil "CREATE TABLE ~A(~{~A~@{,~A~}~});" 155 name 156 (mapcar 'sql-column descs))) 157 158 (defstruct dbf-desc 159 name 160 filename 161 sql-create) 162 132 163 (defvar *dbfs* (make-hash-table :test 'eq)) 133 164 … … 135 166 (let ((descs (nth-value 1 (read-dbf-structure filename)))) 136 167 `(progn 137 (setf (gethash ',name *dbfs*) ,filename) 168 (setf (gethash ',name *dbfs*) 169 (make-dbf-desc :name ',name 170 :filename ,filename 171 :sql-create ,(sql-create name descs))) 138 172 ,(struct-from-field-descs name descs)))) 139 173 … … 141 175 142 176 ;;; Now file stuff. 143 144 145 177 146 178 (defun read-records (in type &optional records) … … 156 188 (read-records in type)))) 157 189 158 (define-dbf-struct unit-type "/home/dsowen/scott/main/db/brisutyp.dbf") 159 (define-dbf-struct vendor "/home/dsowen/scott/main/db/brisvend.dbf") 190 (define-dbf-struct unit-type "/home/dsowen/scott/local/bent-data/bentutyp.dbf") 191 (define-dbf-struct vendor "/home/dsowen/scott/local/bent-data/bentvend.dbf") 192 (define-dbf-struct phone "/home/dsowen/scott/local/bent-data/bentphon.dbf") 193 (define-dbf-struct tenent-change "/home/dsowen/scott/local/bent-data/benttchg.dbf")
Note: See TracChangeset
for help on using the changeset viewer.
