我正在尝试使用HugSQL从数据库中选择一些记录,然后取回记录 尝试以下代码时,我遇到了几个问题:
f/attempt-all [_ (println "Getting DB records")
db-records (oracle-db/get-records my-db)
;hangs here when there are large(100,000k+) records
和
-- :name get-records
select /*+ index(src_ski_sysevents_au SRC_SKI_SYSEVENTS_AU_IDX_A)*/ * from src_ski_sysevents_au where week_id='201903' AND ROWNUM <'10000'
实际结果: db-records具有一个映射列表(返回的每个记录的映射),如下所示:
({:remarks nil, :timeprocessing 1994-01-01 00:00:00.000, :devicetype 3M, :staffcode 0M,
:timedeletion 1994-01-01 00:00:00.000, :occurred 1M, :syseventdesig Ticket jam, :time 2019-01-14 10:47:37.350, :syseventno 27M,
:devicedesig P4 LH Exit Wilga ST - 49, :devicenoprocessing 0M, :component nil, :lotabbr P3P4, :deviceabbr P4 LEX WIL,
:week_id 201903M, :lotdesig P3, P4 Levels, :dss_update_time #inst "2019-01-14T15:48:46.000000000-00:00", :loaded_new_yn N,
:operatorfirstname nil, :quantity 1M, :systemeventregno 7365M, :pdi_batch_id 697410M, :lotno 1M, :deviceno 49M, :deleted_yn N,
:centre_no 0012000, :lot_no 0012001, :operatorsurname unattended, :operatornoprocessing 0M}
...
)
我想知道如何将地图列表转换为Json字符串文件或CSV文件以将其推送到我的端点。处理
之类的非字符串值时:timeprocessing 1994-01-01 00:00:00.000
我将这个测试字符串放入具有无效数字格式的(comment (def testmap {input_test_Data}))
中进行测试后,立即发现了这些错误,并且我也发现
:dss_update_time在我的数据库中是“ 15 / JAN / 19”
但是在HugSQL结果中,我得到了这样的信息
:dss_update_time #inst“ 2019-01-14T15:48:46.000000000-00:00”
基本上如何确保我能取回所有数据 至少在问题的第二部分,我们将非常感谢您的帮助。谢谢
答案 0 :(得分:0)
请使用函数prn
而不是println
打印出示例数据行。然后您会看到日期值实际上是字符串(prn
不会像println
那样删除双引号字符)。
那时,您可以只使用常规的EDN-> JSON转换。 a simple function中有the Tupelo library:
(t/edn->json {:a 1 :b 2})
;=> {"a":1,"b":2}
只是在后台使用Cheshire lib,并自动执行关键字<->字符串转换。