1 |
702
|
aaronmk
|
Installation:
|
2 |
|
|
Install: make install
|
3 |
3370
|
aaronmk
|
WARNING: This will delete the current public schema of your VegBIEN DB!
|
4 |
702
|
aaronmk
|
Uninstall: make uninstall
|
5 |
3370
|
aaronmk
|
WARNING: This will delete your entire VegBIEN DB!
|
6 |
3374
|
aaronmk
|
This includes all archived imports and staging tables.
|
7 |
554
|
aaronmk
|
|
8 |
3674
|
aaronmk
|
Maintenance:
|
9 |
|
|
Important: Whenever you install a system update that affects PostgreSQL or
|
10 |
|
|
any of its dependencies, such as libc, you should restart the PostgreSQL
|
11 |
|
|
server. Otherwise, you may get strange errors like "the database system
|
12 |
|
|
is in recovery mode" which go away upon reimport.
|
13 |
|
|
|
14 |
702
|
aaronmk
|
Data import:
|
15 |
1550
|
aaronmk
|
Import data into VegBIEN: . bin/import_all
|
16 |
3205
|
aaronmk
|
Using column-based import: . bin/with_all 'import by_col=1'
|
17 |
1556
|
aaronmk
|
Stop all running imports: . bin/stop_imports
|
18 |
2976
|
aaronmk
|
Archive the last import: make schemas/rotate
|
19 |
3381
|
aaronmk
|
Remove the last import: make schemas/public/reinstall
|
20 |
|
|
WARNING: This will delete the current public schema of your VegBIEN DB!
|
21 |
2976
|
aaronmk
|
Re-import data: make schemas/rotate; . bin/import_all
|
22 |
|
|
Note: This will archive the last import.
|
23 |
3381
|
aaronmk
|
|
24 |
3545
|
aaronmk
|
Backups:
|
25 |
3547
|
aaronmk
|
After a new import:
|
26 |
3698
|
aaronmk
|
On vegbiendev:
|
27 |
3547
|
aaronmk
|
make schemas/rotate
|
28 |
|
|
Rename the rotated schema using the date in the first datasource's log
|
29 |
|
|
file name
|
30 |
3548
|
aaronmk
|
Delete previous imports so they won't bloat the full DB backup:
|
31 |
|
|
make backups/public.<date>.backup/remove
|
32 |
3547
|
aaronmk
|
make backups/<schema>.backup/test & make backups/vegbien.backup/all &
|
33 |
3698
|
aaronmk
|
On local machine:
|
34 |
|
|
make inputs/download-logs
|
35 |
3701
|
aaronmk
|
make backups/download &
|
36 |
3408
|
aaronmk
|
Archived imports:
|
37 |
|
|
Back up: make backups/public.<date>.backup &
|
38 |
3546
|
aaronmk
|
Note: To back up the last import, you must archive it first (above)
|
39 |
3410
|
aaronmk
|
Test: make backups/public.<date>.backup/test &
|
40 |
3408
|
aaronmk
|
Restore: make backups/public.<date>.backup/restore &
|
41 |
|
|
Remove: make backups/public.<date>.backup/remove
|
42 |
3701
|
aaronmk
|
Download: make backups/download
|
43 |
3408
|
aaronmk
|
Full DB:
|
44 |
3546
|
aaronmk
|
Back up, test, and rotate: make backups/vegbien.backup/all &
|
45 |
3439
|
aaronmk
|
Back up and rotate: make backups/vegbien.backup/rotate &
|
46 |
|
|
Test: make backups/vegbien.<date>.backup/test &
|
47 |
|
|
Restore: make backups/vegbien.<date>.backup/restore &
|
48 |
3701
|
aaronmk
|
Download: make backups/download
|
49 |
3698
|
aaronmk
|
Import logs:
|
50 |
|
|
Download: make inputs/download-logs
|
51 |
554
|
aaronmk
|
|
52 |
1773
|
aaronmk
|
Datasource setup:
|
53 |
3586
|
aaronmk
|
Add a new datasource: make inputs/<name>/add
|
54 |
|
|
<name> may not contain spaces, and should be abbreviated.
|
55 |
|
|
If the datasource is a herbarium, <name> should be the herbarium code as
|
56 |
|
|
defined by the Index Herbariorum <http://sweetgum.nybg.org/ih/>
|
57 |
3557
|
aaronmk
|
Populate the src/ subdir with input data:
|
58 |
3586
|
aaronmk
|
Obtain/create CSVs for the table(s) present in the datasource:
|
59 |
3557
|
aaronmk
|
specimens, plots, organisms, stems
|
60 |
3612
|
aaronmk
|
If there are multiple part files for a table, and the header is repeated
|
61 |
|
|
in each part, make sure each header is EXACTLY the same.
|
62 |
|
|
(If the headers are not the same, the CSV concatenation script
|
63 |
|
|
assumes the part files don't have individual headers and treats the
|
64 |
|
|
subsequent headers as data rows.)
|
65 |
3557
|
aaronmk
|
Rename each CSV so it ends in ".<table>.<ext>" (see tables above)
|
66 |
3593
|
aaronmk
|
Auto-create the map spreadsheets:
|
67 |
|
|
make inputs/<name>/; make inputs/<name>/
|
68 |
|
|
Note: Must be run twice to properly bootstrap all maps.
|
69 |
|
|
svn add inputs/<name>/maps/{*.csv,.*.last_cleanup}
|
70 |
3611
|
aaronmk
|
Install the staging tables:
|
71 |
|
|
make inputs/<name>/reinstall quiet=1 &
|
72 |
|
|
To view progress: tail -f inputs/<name>/import/install-<table>.log.sql
|
73 |
3614
|
aaronmk
|
View the logs: tail -n +1 inputs/<name>/import/install-*.log.sql
|
74 |
3611
|
aaronmk
|
tail provides a header line with the filename
|
75 |
|
|
+1 starts at the first line, to show the whole file
|
76 |
|
|
For every file with an error 'column "..." specified more than once':
|
77 |
|
|
Add a header override file "+header.<table>.<ext>" in src/:
|
78 |
|
|
Note: The leading "+" should sort it before the flat files.
|
79 |
|
|
"_" unfortunately sorts *after* capital letters in ASCII.
|
80 |
|
|
Create a text file containing the header line of the flat files
|
81 |
|
|
Add an ! at the beginning of the line
|
82 |
|
|
This signals cat_csv that this is a header override.
|
83 |
|
|
For empty names, use their 0-based column # (by convention)
|
84 |
|
|
For duplicate names, add a distinguishing suffix
|
85 |
|
|
For long names that collided, rename them to <= 63 chars long
|
86 |
|
|
Do NOT make readability changes in this step; that is what the
|
87 |
|
|
map spreadsheets (below) are for.
|
88 |
|
|
Save
|
89 |
|
|
svn add inputs/<name>/src/<header_override>
|
90 |
|
|
If you made any changes, re-run the install command above
|
91 |
3576
|
aaronmk
|
Map each table's columns:
|
92 |
|
|
In the maps/ subdir, for each "via map" of the form "<via>.<table>.csv":
|
93 |
|
|
Open the map in a spreadsheet editor
|
94 |
|
|
In /mappings, open the corresponding "core map" of the form
|
95 |
|
|
"<via>-VegBIEN.<table>.csv"
|
96 |
|
|
In each row of the via map, set the right column to a value from the
|
97 |
|
|
left column of the core map
|
98 |
|
|
Save
|
99 |
|
|
Regenerate the derived maps: make inputs/<name>/
|
100 |
3593
|
aaronmk
|
Accept the test cases:
|
101 |
|
|
make inputs/<name>/test/
|
102 |
|
|
When prompted to "Accept new test output", enter y and press ENTER
|
103 |
3690
|
aaronmk
|
If you instead get errors, do one of the following for each one:
|
104 |
|
|
- If the error was due to a bug, fix it
|
105 |
|
|
- Add a SQL function that filters or transforms the invalid data
|
106 |
|
|
- Make an empty mapping for the columns that produced the error.
|
107 |
|
|
Put something in the Comments column of the map spreadsheet to
|
108 |
|
|
prevent the automatic mapper from auto-removing the mapping.
|
109 |
3783
|
aaronmk
|
When accepting tests, it's helpful to use WinMerge
|
110 |
|
|
(see WinMerge setup below for configuration)
|
111 |
3593
|
aaronmk
|
svn add inputs/<name>/test/*.ref
|
112 |
3583
|
aaronmk
|
Commit: svn ci -m "Added inputs/<name>/" inputs/<name>/
|
113 |
3585
|
aaronmk
|
Update vegbiendev:
|
114 |
|
|
On vegbiendev: svn up
|
115 |
|
|
On local machine: make inputs/upload
|
116 |
3588
|
aaronmk
|
On vegbiendev: Follow the steps under Install the staging tables above
|
117 |
1773
|
aaronmk
|
|
118 |
702
|
aaronmk
|
Schema changes:
|
119 |
|
|
Regenerate schema from installed DB: make schemas/remake
|
120 |
1967
|
aaronmk
|
Reinstall DB from schema: make schemas/reinstall
|
121 |
3370
|
aaronmk
|
WARNING: This will delete the current public schema of your VegBIEN DB!
|
122 |
3441
|
aaronmk
|
Reinstall errors tables: make inputs/install errors_table_only=1
|
123 |
3589
|
aaronmk
|
Reinstall staging tables: . bin/reinstall_all
|
124 |
702
|
aaronmk
|
Sync ERD with vegbien.sql schema:
|
125 |
|
|
Run make schemas/vegbien.my.sql
|
126 |
|
|
Open schemas/vegbien.ERD.mwb in MySQLWorkbench
|
127 |
|
|
Go to File > Export > Synchronize With SQL CREATE Script...
|
128 |
|
|
For Input File, select schemas/vegbien.my.sql
|
129 |
|
|
Click Continue
|
130 |
|
|
Click in the changes list and press Ctrl+A or Apple+A to select all
|
131 |
|
|
Click Update Model
|
132 |
|
|
Click Continue
|
133 |
|
|
Note: The generated SQL script will be empty because we are syncing in
|
134 |
|
|
the opposite direction
|
135 |
|
|
Click Execute
|
136 |
|
|
Reposition any lines that have been reset
|
137 |
|
|
Add any new tables by dragging them from the Catalog in the left sidebar
|
138 |
|
|
to the diagram
|
139 |
|
|
Remove any deleted tables by right-clicking the table's diagram element,
|
140 |
|
|
selecting Delete '<table name>', and clicking Delete
|
141 |
|
|
Save
|
142 |
1774
|
aaronmk
|
If desired, update the graphical ERD exports (see below)
|
143 |
|
|
Update graphical ERD exports:
|
144 |
702
|
aaronmk
|
Go to File > Export > Export as PNG...
|
145 |
1774
|
aaronmk
|
Select schemas/vegbien.ERD.png and click Save
|
146 |
702
|
aaronmk
|
Go to File > Export > Export as SVG...
|
147 |
1774
|
aaronmk
|
Select schemas/vegbien.ERD.svg and click Save
|
148 |
702
|
aaronmk
|
Go to File > Export > Export as Single Page PDF...
|
149 |
1774
|
aaronmk
|
Select schemas/vegbien.ERD.pdf and click Save
|
150 |
|
|
Go to File > Print...
|
151 |
|
|
For Pages, choose From 1 To 1
|
152 |
|
|
In the lower left corner, click PDF > Save as PDF...
|
153 |
|
|
Set the Title and Author to ""
|
154 |
|
|
Select schemas/vegbien.ERD.core.pdf and click Save
|
155 |
203
|
aaronmk
|
|
156 |
1459
|
aaronmk
|
Testing:
|
157 |
|
|
Mapping process: make test
|
158 |
|
|
Map spreadsheet generation: make remake
|
159 |
1744
|
aaronmk
|
Missing mappings: make missing_mappings
|
160 |
1459
|
aaronmk
|
Everything (for most complete coverage): make test-all
|
161 |
702
|
aaronmk
|
|
162 |
3783
|
aaronmk
|
WinMerge setup:
|
163 |
|
|
Install WinMerge from <http://winmerge.org/>
|
164 |
3785
|
aaronmk
|
Open WinMerge
|
165 |
|
|
Go to Edit > Options and click Compare in the left sidebar
|
166 |
3783
|
aaronmk
|
Enable "Moved block detection", as described at
|
167 |
|
|
<http://manual.winmerge.org/Configuration.html#d0e5892>.
|
168 |
3784
|
aaronmk
|
Set Whitespace to Ignore change, as described at
|
169 |
|
|
<http://manual.winmerge.org/Configuration.html#d0e5758>.
|
170 |
3783
|
aaronmk
|
|
171 |
3133
|
aaronmk
|
Documentation:
|
172 |
|
|
To generate a Redmine-formatted list of steps for column-based import:
|
173 |
|
|
make inputs/QMOR/import/steps.by_col.sql
|
174 |
|
|
|
175 |
702
|
aaronmk
|
General:
|
176 |
|
|
To see a program's description, read its top-of-file comment
|
177 |
|
|
To see a program's usage, run it without arguments
|
178 |
3389
|
aaronmk
|
To remake a directory: make <dir>/remake
|
179 |
|
|
To remake a file: make <file>-remake
|