Difference between revisions of "Import CSV data into a wiki"
m |
m (→Installation) |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{procedure}} |
− | + | [{{repo|tools|csv2wiki.pl}} csv2wiki.pl] is a simple perl script to import data from a CSV file into a MediaWiki. | |
− | <source> | + | |
+ | == Installation == | ||
+ | The script depends on a Perl module called [{{repo|tools|MediaWiki.pm}} MediaWiki.pm] which needs to be saved in the same location, or in one of your Perl include paths. | ||
+ | |||
+ | It also depends on ''LWP'' and ''XML::Simple''. If these dependencies are not present, Perl will raise an error specifying which one is not available and you can then install it with CPAN, e.g. | ||
+ | <source lang="bash"> | ||
+ | cpan XML::Simple | ||
+ | </source> | ||
+ | |||
+ | On Debian-like systems there are also packages for the dependencies: | ||
+ | <source lang="bash"> | ||
+ | apt install libwww-perl libxml-simple-perl | ||
+ | </source> | ||
+ | |||
+ | == Usage == | ||
+ | The program is run from the shell and requires one parameter which is the filename of a configuration file describing the parameters for the job. | ||
+ | <source lang="bash"> | ||
./csv2wiki.pl /home/myJob.conf | ./csv2wiki.pl /home/myJob.conf | ||
</source> | </source> | ||
− | Here is an example configuration file: | + | Here is an example the content of a configuration file: |
<source lang="js"> | <source lang="js"> | ||
wiki = "http://foo.bar/wiki/index.php" | wiki = "http://foo.bar/wiki/index.php" | ||
Line 14: | Line 30: | ||
csv = "/home/foo/projects/bar.csv" | csv = "/home/foo/projects/bar.csv" | ||
title = "$1 $2 $3" | title = "$1 $2 $3" | ||
− | template = Customer | + | template = "Customer" |
</source> | </source> | ||
− | Each line of the input file will be imported into an article in the wiki, and the first line of the input file specifies the | + | Each line of the input CSV file will be imported into an article in the wiki, and the first line of the input file specifies the column header names, for example: |
<source> | <source> | ||
Title, Firstname, Surname | Title, Firstname, Surname | ||
Line 26: | Line 42: | ||
− | In this example the first row of data will be imported into an article called "Mr Bob McFoo" with the following content | + | In this example the first row of data will be imported into an article called "Mr Bob McFoo" with the following content. The column header names are used as the template parameter names, with the values from that row of the CSV file being used as the values for the template parameters. |
<source> | <source> | ||
{{Customer | {{Customer | ||
Line 55: | Line 71: | ||
|separator||Also just "sep" is allowed, specifies the separator character used in the CSV file||''comma'' | |separator||Also just "sep" is allowed, specifies the separator character used in the CSV file||''comma'' | ||
|- | |- | ||
− | |title||The format of the title using '''$n''' to specify the column numbers, default is ''$1'' which means to use just the first | + | |title||The format of the title using '''$n''' to specify the column numbers, default is ''$1'' which means to use just the first column as the page title||$1 |
|- | |- | ||
|template||The template that the parameters should be wrapped by in the created wiki articles||Record | |template||The template that the parameters should be wrapped by in the created wiki articles||Record |
Latest revision as of 20:52, 7 May 2020
Import CSV data into a wiki Organic Design procedure |
csv2wiki.pl is a simple perl script to import data from a CSV file into a MediaWiki.
Installation
The script depends on a Perl module called MediaWiki.pm which needs to be saved in the same location, or in one of your Perl include paths.
It also depends on LWP and XML::Simple. If these dependencies are not present, Perl will raise an error specifying which one is not available and you can then install it with CPAN, e.g.
cpan XML::Simple
On Debian-like systems there are also packages for the dependencies:
apt install libwww-perl libxml-simple-perl
Usage
The program is run from the shell and requires one parameter which is the filename of a configuration file describing the parameters for the job.
./csv2wiki.pl /home/myJob.conf
Here is an example the content of a configuration file:
wiki = "http://foo.bar/wiki/index.php"
user = "Foo"
pass = "Bar"
csv = "/home/foo/projects/bar.csv"
title = "$1 $2 $3"
template = "Customer"
Each line of the input CSV file will be imported into an article in the wiki, and the first line of the input file specifies the column header names, for example:
Title, Firstname, Surname
Mr, Bob, McFoo
Miss, Mary, Barson
In this example the first row of data will be imported into an article called "Mr Bob McFoo" with the following content. The column header names are used as the template parameter names, with the values from that row of the CSV file being used as the values for the template parameters.
{{Customer
| Title = Mr
| Firstname = Bob
| Surname = McFoo
}}
If the page already existed, then the new template would be inserted at the top of the page (or the bottom if "append" is set). Or if the template already exists in the page, then it's values will be updated.
Note that pages that already have templates on them must only use a single value on each line in their syntax.
Configuration options
Here is a description of the possible parameters in the job file and their meaning:
Name | Meaning | Default value |
---|---|---|
csv | The source file to import relative to the location of the script | - |
wiki | the full long-form URL of the wiki including index.php | - |
user | Username of a user on the wiki with permission to create the necessary articles | - |
pass | The users password | - |
separator | Also just "sep" is allowed, specifies the separator character used in the CSV file | comma |
title | The format of the title using $n to specify the column numbers, default is $1 which means to use just the first column as the page title | $1 |
template | The template that the parameters should be wrapped by in the created wiki articles | Record |
append | Set this to 1 to place the template at the end of the text if the template doesn't already exist in the article | 0 |
include | A comma-separated list of the columns that should be included from the CSV, by default all columns are used | not set |