Migrating Users Between Bitweaver Sites

One-time copy of users.

Created by: sikko, Last modification: 17 May 2008 (15:33 UTC)

Use Cases

Use case 1: Bitweaversite1 has a lot of users in its db. The site is being migrated to a new one, without all the previous data. The new site has to have all the old users though, so they can still login using the IDs they had before.
Use case 2: Bitweaversite1 userbase is being merged with Bitweaversite2, and all users need to be imported into one userlist, but no content has to be added.

Steps to go through

Export the user list from phpMyAdmin.

  • Open your db to extract the users from.
  • Select tab "SQL"
  • enter
    
    <?php
    SELECT 
    `login`,`email`,`real_name`,`hash`,`registration_dateFROM `users_usersWHERE 1
    ?>
  • Push Export (bottom of page, not the tab)
  • Make sure the output is CSV, empty the "replace NULL with" field, "export table titles as first row" is checked, delimiter is "," and check "download" button, no compression. Press start to export the list, and save.
  • Enter the saved file and remove the lines of users "root", "guest" and "admin", and check if there is any line with "NULL" in its "real_name" field. Replace this with the info from "login", so the field is filled with that on import.

Importing the exported userlist

  • Update "users/BitUser.php" from CVS. (in BW2.0.2.)
  • Goto http://example.com/users/admin/users_import.php
  • Enter the saved file into the filename field.
  • Choose the bottom item "do not mail users".
  • Press import.

Remember: Users will belong to group "Registered" only, more rights for the users will need to be added by hand! Also other options as preferred language etc. will not be imported.


When re-importing the same list, if you get an error for every imported user: The username "xxx" is already in use,The email address "xxx@example.com" has already been registered, check the "Overwrite existing users" box.

Problems solved (for V2.0.2.) by CVS update of user/BitUser.php:

  • When importing error: Warning: filesize() function.filesize: stat failed for /path/storage/users/4/4/images/2/users.csv in /path/liberty/liberty_lib.php on line 589
  • Per import line error: Could not store file: users.csv.

Example import data:


<?php
"login","email","real_name","hash","registration_date"
"user1"
,"user1@example.com","Real Name1","pw_hash1","1143543281"
"user2"
,"user2@example.com","Real Name2","pw_hash2","1143567722"
?>


Help from the import page:

You can batch import users by uploading a CSV (comma-separated values) file. The file needs to have the column names in the first line. The column titles need to match with fields in 'users_users' table. Login, password and email are required fields, however if you leave the password field empty a new password will be auto generated. You can also import a MD5 hash as password, like from phpBB2, it need to be put in the 'hash' column. In such case it override other options and it's assumed the user or at least admin knows the password. Currently you can't import custom fields and if a non-existent field is specified, it's ignored.