Note: You are currently viewing documentation for Moodle 3.1. Up-to-date documentation for the latest stable version of Moodle is probably available here: Upload users.
This page requires updating. Please do so and remove this template when finished.
Location: Administration > Users > Accounts > Upload users
The upload users utility is a simple but powerful way to upload user information into Moodle. It is possible to either create authenticate users, or to create authenticate users and enrol them into a course at once.
- Note: that recent versions of Moodle have tools to keep the site administrators' personal maintenance work down besides this particular form of manual authentication. For example, connecting to existing external databases or letting the users create their own accounts. See the Authentication section in the admin menus.
The user data text file must follow a certain format, as described below.
Upload file format
Users may be imported, enrolled on courses and organised into groups via flat file.
If you are sure you want to import multiple user accounts from a text file, then you need to format your text file as follows:
- Each line of the file contains one record
- Each record is a series of data separated by commas
- The first record of the file is special, and contains a list of fieldnames. This defines the format of the rest of the file.
- Required fieldnames: these fields must be included in the first record, and defined for each user
username, password, firstname, lastname, email
Remember that validity checks for the username, password, and email fields will be performed. Usernames can only contain alphabetical letters or numbers and should not contain an underscore; however, a period is permissible. Passwords should meet the requirements specified for the site's Password policy. Emails should be in the format of a valid email.
- Default fieldnames: these are optional - if they are not included then the values are taken from the primary admin
institution, department, city, country, lang, auth, timezone
- Optional fieldnames: all of these are completely optional. The course names are the "shortnames" of the courses - if present then the user will be enrolled as students in those courses. Group names must be associated to the corresponding courses, i.e. group1 to course1, etc.
idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, course1, course2, course3, course4, course5, group1, group2, group3, group4, group5, type1, type2, type3, type4, type5
- User Profile Field: all the user profile fields or custom profiles shall use the following convention (moodle 1.9): profile_field_<your_custom_field>.
Roles amendments: Note that since roles have been added in Moodle 1.7, there is a new (better) fieldname to use for enrolments and that is role. You can use role field instead of the legacy type field to specify roles directly - use either role short name or id (numeric names of roles are not supported).
- Commas within the data should be encoded as , - the script will automatically decode these back to commas.
- For Boolean fields, use 0 for false and 1 for true.
- Types are used to tell Moodle whether the user is a student or a teacher if a corresponding course exists (e.g. type2 corresponds to course2). 1 = Student, 2 = Editing Teacher, and 3 = Non-editing Teacher. If type is left blank, or if no course is specified, the user is default to student.
- Force password change: Set the password field for desired users to changeme.
- Turn email off: The parameter emailstop must be set to 1 if the email address should not work. If you set it to 0 then the email address is switched on. If you want to have all the email addresses active then you do not need the additional parameter in your upload file.
- For courses, use the short name for the course
- Note: If a user is already registered in the Moodle user database, this script will return the userid number (database index) for that user, and will enrol the user as a student in any of the specified courses WITHOUT updating the other specified data.
Here is an example of a valid import file:
username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1, type1<br /> jonest, verysecret, Tom, Jones, email@example.com, en, 3663737, 1, Junk102, Section 1, 1<br /> reznort, somesecret, Trent, Reznor, firstname.lastname@example.org, en_us, 6736733, 0, Junk102, Section 3, 3
(Text copied from Upload users help file.)
Updating existing accounts
By default Moodle assumes that you will be creating new user accounts, and skips records where the username matches an existing account. However, if you set "Update existing accounts" to Yes, the existing user account will be updated.When updating existing accounts you can change usernames as well. Set "Allow renames" to Yes and include in your file a field called
Warning: any errors updating existing accounts can affect your users badly. Be careful when using the options to update.
Prior to Moodle 1.6, the file must have the same encoding as your language pack. In Moodle 1.7 and 1.8 it is always UTF-8.
Template:Moodle 1.9In Moodle 1.9 onwards, the encoding may be selected from a large list, including ISO-8859-1.
Upload users preview
If you use a spreadsheet program such as Excel to create your .csv file, check the resulting output in a text editor before you upload it. It is possible to get trailing commas on each line from an empty field if you have added and deleted columns of information prior to saving the final file. Also check the character encoding. A csv file is a simple text file (ASCII or Unicode) that can be used to upload user accounts.
Excel translates passwords that begin with - (minus) or + (plus) as zero. Even when saving as .csv and saying "Yes" to "Keep this format, and leave out any incompatible features." Check for this before uploading, as a zero halts the upload process.
If you use a formula in Excel to create fields (for example, the concatenate function to create a user name), then remember to copy the cells with the formula and use special paste with values checked to make them into an acceptable data for a csv file.
The country should be written as a two letter code, in capitals. For example, use BE for Belgium or NL for the Netherlands. Using "be" or "nl" as a country code will result in a database error.
- Tip: If you are having trouble working out the two-letter code for a country, you can consult this Moodle source code file /moodle/lang/en_utf8/countries.php or click here for a 1.9 STABLE list.
Using Moodle forum discussions: