मैंने आंद्रे डंस्टन के ब्लॉग का उपयोग करके समाप्त किया और यह SO उत्तर जो कॉपी कमांड का उपयोग करने के लिए एक विशिष्ट तरीके से जोंस को प्रारूपित करने के लिए कहता है।
चूंकि मेरे द्वारा पार्स की जा रही फाइलों के लिए मेरी संरचना काफी परिभाषित है, इसलिए मैंने निम्नलिखित स्क्रिप्ट के साथ समाप्त किया।
def file_len(fname):
# to find the number of lines in the file.
# Has been pretty efficient even for millions of records
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
INPUTFILE = '/path/to/input.json'
OUTPUTFILE = '/path/to/output.json.csv'
LEN = file_len(INPUTFILE)
with open(OUTPUTFILE, 'w') as fo:
with open(INPUTFILE, 'r') as fi:
for i, l in enumerate(fi):
# I skip the first line
if i == 0: continue
# To remove the ']}}' from the end
elif i+1 == LEN: _ = fo.write(l[:-3])
# To remove the ',' from the end
# and add \n since write does not add newline on its own
else: _ = fo.write(l[:-2]+'\n')
# load statement
import sqlalchemy
POSTGRESQL = f'postgresql+psycopg2://{USERNAME}:{PASSWORD}@{HOSTNAME}/{DB}'
engine = sqlalchemy.create_engine(POSTGRESQL, echo=True)
con = engine.connect()
trans = con.begin()
LOAD_SQL = f"COPY tablename from '{OUTPUTFILE}' with csv delimiter E'\x01' quote E'\x02' null as '';"
try:
con.execute(LOAD_SQL)
trans.commit()
except Exception as e:
trans.rollback()
finally:
con.close()