Skip to content

Commit 89061c2

Browse files
committed
更新bulk文件导出工具
1 parent fc37a4e commit 89061c2

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

tools/export.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import json
55
import time
66
import os
7+
from datetime import datetime, date
78

89

910
class ExportBulk(object):
@@ -14,18 +15,33 @@ def __init__(self, index_name, type_name, file_name=None):
1415
self._index = index_name
1516
self._type = type_name
1617
if file_name is None:
17-
file_name = 'bulk_%s.bulk' % time.time()
18+
file_name = './es_%s_%s_%s.bulk' % (index_name, type_name, time.time())
1819
file_path = os.path.dirname(file_name)
1920
if not os.path.isdir(file_path):
2021
os.mkdir(file_path)
2122
self.bulk_fp = open(file_name, 'a')
2223

24+
@staticmethod
25+
def __default(obj):
26+
"""
27+
支持datetime的json encode
28+
TypeError: datetime.datetime(2015, 10, 21, 8, 42, 54) is not JSON serializable
29+
:param obj:
30+
:return:
31+
"""
32+
if isinstance(obj, datetime):
33+
return obj.strftime('%Y-%m-%d %H:%M:%S')
34+
elif isinstance(obj, date):
35+
return obj.strftime('%Y-%m-%d')
36+
else:
37+
raise TypeError('%r is not JSON serializable' % obj)
38+
2339
def write(self, index_id, body):
2440
"""
2541
文件写入
2642
"""
2743
self.bulk_fp.write(json.dumps({"index": {"_index": self._index, '_type': self._type, '_id': index_id}})+"\n")
28-
self.bulk_fp.write(json.dumps(body)+"\n")
44+
self.bulk_fp.write(json.dumps(body, ensure_ascii=False, default=self.__default)+"\n")
2945

3046
def close(self):
3147
"""
@@ -38,7 +54,7 @@ class ExportFile(object):
3854
"""
3955
导出json/csv文件工具类
4056
"""
41-
def __init__(self, file_name):
57+
def __init__(self, file_name=None):
4258
if file_name is None:
4359
file_name = 'json_%s.json' % time.time()
4460
file_path = os.path.dirname(file_name)

0 commit comments

Comments
 (0)