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

viaf-index.sql 2.7 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
61
62
63
64
65
  1. --- #dep viaf
  2. --- #table viaf.record_codes
  3. --- #table viaf.author_name
  4. --- #table viaf.author_gender
  5. --- #step Index MARC record IDs
  6. CREATE INDEX If NOT EXISTS marc_field_rec_idx ON viaf.marc_field (rec_id);
  7. ANALYZE viaf.marc_field;
  8. --- #step Extract control numbers
  9. CREATE OR REPLACE VIEW viaf.record_codes
  10. AS SELECT rec_id,
  11. SUBSTR(contents, 6, 1) AS status,
  12. SUBSTR(contents, 7, 1) AS rec_type,
  13. substr(CONTENTS, 8, 1) AS bib_level
  14. FROM viaf.marc_field WHERE tag = 'LDR';
  15. CREATE MATERIALIZED VIEW IF NOT EXISTS viaf.marc_cn
  16. AS SELECT rec_id, trim(contents) AS control
  17. FROM viaf.marc_field
  18. WHERE tag = '001';
  19. CREATE INDEX IF NOT EXISTS marc_cn_rec_idx ON viaf.marc_cn (rec_id);
  20. ANALYZE viaf.marc_cn;
  21. CREATE MATERIALIZED VIEW IF NOT EXISTS viaf.rec_isbn
  22. AS SELECT rec_id, TRIM(contents) AS rec_isbn
  23. FROM viaf.marc_field WHERE tag = '901' AND sf_code = 'a';
  24. CREATE INDEX IF NOT EXISTS isbn_rec_idx ON viaf.rec_isbn (rec_id);
  25. CREATE INDEX IF NOT EXISTS isbn_isbn_idx ON viaf.rec_isbn (rec_isbn);
  26. --- #step Extract author names
  27. DROP TABLE IF EXISTS viaf.author_name CASCADE;
  28. CREATE TABLE viaf.author_name (
  29. rec_id INTEGER NOT NULL,
  30. ind VARCHAR(1) NOT NULL,
  31. name VARCHAR NOT NULL
  32. );
  33. INSERT INTO viaf.author_name
  34. SELECT rec_id, ind1, regexp_replace(contents, '\W+$', '') AS name
  35. FROM viaf.marc_field
  36. WHERE TAG = '700' AND sf_code = 'a';
  37. INSERT INTO viaf.author_name
  38. SELECT rec_id, 'S', regexp_replace(name, '^(.*), (.*)', '\2 \1')
  39. FROM viaf.author_name
  40. WHERE ind = '1';
  41. CREATE INDEX author_rec_idx ON viaf.author_name (rec_id);
  42. CREATE INDEX author_name_idx ON viaf.author_name (name);
  43. ANALYZE viaf.author_name;
  44. --- #step Extract author genders
  45. CREATE MATERIALIZED VIEW IF NOT EXISTS viaf.author_gender
  46. AS SELECT rec_id, contents AS gender
  47. FROM viaf.marc_field
  48. WHERE TAG = '375' AND sf_code = 'a';
  49. CREATE INDEX IF NOT EXISTS gender_rec_idx ON viaf.author_gender (rec_id);
  50. -- CREATE INDEX viaf_author_name_id_idx ON viaf.author_name (viaf_au_id);
  51. -- CREATE INDEX viaf_author_name_idx ON viaf.author_name (viaf_au_name);
  52. -- ALTER TABLE viaf.author_name ADD CONSTRAINT viaf_au_name_fk FOREIGN KEY (viaf_au_id) REFERENCES viaf_author;
  53. -- DELETE FROM viaf.author_name WHERE viaf_au_name_source = 'SYNTH';
  54. -- INSERT INTO viaf.author_name (viaf_au_id, viaf_au_name, viaf_au_name_source, viaf_au_name_dates)
  55. -- SELECT viaf_au_id, regexp_replace(regexp_replace(viaf_au_name, ',$', ''), '^(.*), (.*)', '\2 \1'), 'SYNTH', viaf_au_name_dates
  56. -- FROM viaf.author_name
  57. -- WHERE viaf_au_name LIKE '%,%';
  58. -- CREATE INDEX viaf_gender_id_idx ON viaf_author_gender (viaf_au_id);
  59. -- ALTER TABLE viaf_author_gender ADD CONSTRAINT viaf_au_id_fk FOREIGN KEY (viaf_au_id) REFERENCES viaf_author;
Tip!

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

Comments

Loading...