Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

loc-import.js 1.5 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  1. const zlib = require('zlib');
  2. const stream = require('stream');
  3. const fs = require('fs-extra');
  4. const miss = require('mississippi');
  5. const glob = require('glob');
  6. const childProcess = require('child_process');
  7. const StreamConcat = require('stream-concat');
  8. const pg = require('pg');
  9. const log = require('gulplog');
  10. const io = require('./io');
  11. const throughput = require('./throughput');
  12. const marc = require('./parse-marc');
  13. const pgutil = require('./pgutil');
  14. function parseLOCFile(fn) {
  15. let cp = childProcess.fork('./lib/loc-parse', [fn], {
  16. stdio: ['ignore', 'pipe', process.stderr, 'ipc']
  17. });
  18. return cp.stdout.pipe(io.decodeLines(JSON.parse));
  19. }
  20. function streamLOCFiles(pat) {
  21. let files = glob.sync(pat);
  22. log.info('processing %s LOC files', files.length);
  23. let i = 0;
  24. function nextStream() {
  25. if (i >= files.length) return null;
  26. let fn = files[i];
  27. i += 1;
  28. log.info('opening %s', fn);
  29. return parseLOCFile(fn);
  30. }
  31. return new StreamConcat(nextStream, {objectMode: true});
  32. }
  33. function importLOC(pat) {
  34. let marcStream = marc.renderPostgresText();
  35. let output = pgutil.openCopyStream('loc_marc_field');
  36. marcStream.pipe(output);
  37. streamLOCFiles(pat).pipe(marcStream);
  38. return output;
  39. }
  40. module.exports.import = importLOC;
  41. function convertLOCFiles(pat, outfile) {
  42. let combined = streamLOCFiles(pat);
  43. return combined.pipe(marc.renderPostgresText())
  44. .pipe(zlib.createGzip())
  45. .pipe(fs.createWriteStream(outfile));
  46. }
  47. module.exports.convert = convertLOCFiles;
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...