Welcome, Guest
Username: Password: Remember me

TOPIC: Manual method for moving survey to another database

Manual method for moving survey to another database 8 months 2 weeks ago #101610

  • Mike1985_2
  • Mike1985_2's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
I have LimeSurvey 1.90 installed on two servers and I want to be able to copy a survey from one to the other without using the admin system to import or export.

How risky is it and what table do I need to consider??

Obviously I will need to copy `survey_xxxxx`, `tokens_xxxxx`, a row from `surveys` and a row from `surveys_languagesettings`. I suppose I will have to copy over the `conditions`, `questions` and `answers` as well. (Sorry I'm basically answering my on question here).

Will indexing and id's become an issue?
The administrator has disabled public write access.

Manual method for moving survey to another database 8 months 2 weeks ago #101612

  • Ben_V
  • Ben_V's Avatar
  • OFFLINE
  • Platinum Lime
  • Posts: 1061
  • Thank you received: 234
  • Karma: 74
Is your 2nd installation (for import) new?
...without using the admin system to import or export.
Pure curiosity: Why not?
Benoît

goo.gl/Bw5iM => Recherche GG dans le forum français (remplacer "exemple" dans la barre de recherche)
goo.gl/WX8PH => GG search for english forum (Replace "example" in the search bar)
goo.gl/IxiGu => Búsqueda en el foro en español (Cambiar "ejemplo" en la barra de...
Last Edit: 8 months 2 weeks ago by Ben_V.
The administrator has disabled public write access.

Manual method for moving survey to another database 8 months 2 weeks ago #101615

  • Mike1985_2
  • Mike1985_2's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
Nothing more than inter-office politics! It's as sad as that.

They're both at 1.90 and are both already installed. It's looking like every single table needs partially copying here.

How about this.. Can I export the survey (using the admin system or whatever) as SQL? Just one time so I can unpick it and understand and consider everything that is needed? At the moment, the export is an XML file which I don't really understand..
The administrator has disabled public write access.

Manual method for moving survey to another database 8 months 2 weeks ago #101616

  • Ben_V
  • Ben_V's Avatar
  • OFFLINE
  • Platinum Lime
  • Posts: 1061
  • Thank you received: 234
  • Karma: 74
Theoretically you can update a database using PhpMyAdmin or similar interface...
In your case it sounds that you will get lots of trouble with groups & question IDs...
Note that you can change (everywhere) without problem the survey ID directly in your (xml) export/import file.

I hope another LS user may give you some good advices, because I can't personnaly encourage you to apply this process :(
Benoît

goo.gl/Bw5iM => Recherche GG dans le forum français (remplacer "exemple" dans la barre de recherche)
goo.gl/WX8PH => GG search for english forum (Replace "example" in the search bar)
goo.gl/IxiGu => Búsqueda en el foro en español (Cambiar "ejemplo" en la barra de...
The administrator has disabled public write access.

Manual method for moving survey to another database 8 months 1 week ago #101621

  • c_schmitz
  • c_schmitz's Avatar
  • OFFLINE
  • LimeSurvey Team
  • Posts: 746
  • Thank you received: 101
  • Karma: 87
TBH I don't see a viable solution here.
Support us, too. Donate to the LimeSurvey project and help keep us going!
The administrator has disabled public write access.

Manual method for moving survey to another database 1 month 3 weeks ago #109649

  • Mike1985_2
  • Mike1985_2's Avatar
  • OFFLINE
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
Update...

In case anyone is interested. I have been working with this for a while now. I am essentailly sending the following SQL commands to a .sql file;
CREATE TABLE temp.`surveys` AS                  (SELECT * FROM limeSurvey.`surveys` WHERE `sid` = '$sid');
CREATE TABLE temp.`surveys_languagesettings` AS (SELECT * FROM limeSurvey.`surveys_languagesettings` WHERE `surveyls_survey_id` = '$sid');
CREATE TABLE temp.`surveys_rights` AS           (SELECT * FROM limeSurvey.`surveys_rights` WHERE `sid` = '$sid');
CREATE TABLE temp.`groups` AS                   (SELECT * FROM limeSurvey.`groups` WHERE `sid` = '$sid');
CREATE TABLE temp.`questions` AS                (SELECT * FROM limeSurvey.`questions` WHERE `sid` = '$sid');
CREATE TABLE temp.`assessments` AS              (SELECT * FROM limeSurvey.`assessments` WHERE `sid` = '$sid'); 
CREATE TABLE temp.`answers` AS             (SELECT t2.* FROM limeSurvey.`questions` as t1 LEFT JOIN limeSurvey.`answers` as t2 ON t1.`qid` = t2.`qid` WHERE t1.`sid` = '$sid' AND t2.`qid` IS NOT NULL);
CREATE TABLE temp.`conditions` AS          (SELECT t2.* FROM limeSurvey.`questions` as t1 LEFT JOIN limeSurvey.`conditions` as t2 ON t1.`qid` = t2.`qid` WHERE t1.`sid` = '$sid' AND t2.`qid` IS NOT NULL);
CREATE TABLE temp.`question_attributes` AS (SELECT t2.* FROM limeSurvey.`questions` as t1 LEFT JOIN limeSurvey.`question_attributes` as t2 ON t1.`qid` = t2.`qid` WHERE t1.`sid` = '$sid' AND t2.`qid` IS NOT NULL);
CREATE TABLE temp.`tokens_$sid` AS           (SELECT * FROM limeSurvey.`tokens_$sid`);
CREATE TABLE temp.`survey_$sid` LIKE limeSurvey.`survey_$sid`

I also ran this string replace to stop "TABLE ALREADY EXISTS" error
$file_contents = str_replace("CREATE TABLE","CREATE TABLE IF NOT EXISTS",$file_contents);

And these SQL lines to prevent ID clashing
ALTER TABLE `tokens_'.$sid.'` ADD PRIMARY KEY ( `tid` );
ALTER TABLE `tokens_'.$sid.'` ADD INDEX `tokens_'.$sid.'_idx` ( `token` );
ALTER TABLE `tokens_'.$sid.'` ADD INDEX `idx_tokens_'.$sid.'_efl` ( `email` ( 120 ) , `firstname` , `lastname` );
ALTER TABLE `tokens_'.$sid.'` CHANGE `tid` `tid` INT( 11 ) NOT NULL AUTO_INCREMENT;
ALTER TABLE `survey_'.$sid.'` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT;	

This is probably of no interest to anyone but you never know...
The administrator has disabled public write access.
Moderators: ITEd
Time to create page: 0.292 seconds
Donation Image