|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi gang:
I know that this is not a php question, but all of you are so smart I thought would ask anyway. I need to upload a 5 Meg sql file to a client's database. However, his site's phpMyAdmin shows a maximum file size limit of 2 Meg. Now, is this something that is controlled by his host, or is there a way for me to get around it without requiring his host to do something, or what? How can I do this? Advice sought. Cheers, tedd -- ------- http://sperling.com http://ancientstones.com http://earthstones.com |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
tedd wrote:
> I know that this is not a php question, but all of you are so smart I > thought would ask anyway. > > I need to upload a 5 Meg sql file to a client's database. However, his > site's phpMyAdmin shows a maximum file size limit of 2 Meg. > > Now, is this something that is controlled by his host, or is there a way > for me to get around it without requiring his host to do something, or > what? How can I do this? Manually break the SQL file into several pieces. You may need to duplicate some statements at the top and tail of the main file in each part and also make sure that you duplicate any USE DATABASE statements to ensure you're on the right DB. You'll also need to make sure you execute them on the server in order. -Stut -- http://stut.net/ |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
At 4:46 PM +0100 9/11/07, Stut wrote:
>tedd wrote: >>I know that this is not a php question, but all of you are so smart >>I thought would ask anyway. >> >>I need to upload a 5 Meg sql file to a client's database. However, >>his site's phpMyAdmin shows a maximum file size limit of 2 Meg. >> >>Now, is this something that is controlled by his host, or is there >>a way for me to get around it without requiring his host to do >>something, or what? How can I do this? > >Manually break the SQL file into several pieces. You may need to >duplicate some statements at the top and tail of the main file in >each part and also make sure that you duplicate any USE DATABASE >statements to ensure you're on the right DB. > >You'll also need to make sure you execute them on the server in order. > >-Stut -Stut: This is a relational dB and the several times that I have attempted to load it in "in parts" has met with failure. I was thinking that I could ftp the sql file to the clients server and then run a php script on his server, something like: $sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; system($sql); But, that didn't work -- however -- using mysqldump did download the file. So, I'm close. I know that safe_mode is ON, but I'm not sure if that's what's causing the failure or something else. There has to be a simple way to do this. Cheers, tedd -- ------- http://sperling.com http://ancientstones.com http://earthstones.com |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
tedd wrote:
> At 4:46 PM +0100 9/11/07, Stut wrote: >> tedd wrote: >>> I know that this is not a php question, but all of you are so smart I >>> thought would ask anyway. >>> >>> I need to upload a 5 Meg sql file to a client's database. However, >>> his site's phpMyAdmin shows a maximum file size limit of 2 Meg. >>> >>> Now, is this something that is controlled by his host, or is there a >>> way for me to get around it without requiring his host to do >>> something, or what? How can I do this? >> >> Manually break the SQL file into several pieces. You may need to >> duplicate some statements at the top and tail of the main file in each >> part and also make sure that you duplicate any USE DATABASE statements >> to ensure you're on the right DB. >> >> You'll also need to make sure you execute them on the server in order. >> >> -Stut > > -Stut: > > This is a relational dB and the several times that I have attempted to > load it in "in parts" has met with failure. Split the database up per table - I have a perl script if you want it. Upload each table separately. -- Postgresql & php tutorials http://www.designmagick.com/ |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
tedd wrote:
> I was thinking that I could ftp the sql file to the clients server and > then run a php script on his server, something like: > > $sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; > system($sql); > > But, that didn't work -- however -- using mysqldump did download the > file. So, I'm close. > > I know that safe_mode is ON, but I'm not sure if that's what's causing > the failure or something else. > Just a thought: did you pass the full path for $filename? Also, pass in a return var to read: system($sql, $ret); if ($ret === 0) { echo 'sucess'; } Sorry, you'll have to hunt down the other return codes that MySQl might send back. If safe_mode is enabled, your command will be escaped with escapeshellcmd() but that's about it. If you can FTP it but can't get a shell is there any chance you could convince an admin to run the script? brian |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
tedd wrote:
> At 4:46 PM +0100 9/11/07, Stut wrote: >> tedd wrote: >>> I know that this is not a php question, but all of you are so smart I >>> thought would ask anyway. >>> >>> I need to upload a 5 Meg sql file to a client's database. However, >>> his site's phpMyAdmin shows a maximum file size limit of 2 Meg. >>> >>> Now, is this something that is controlled by his host, or is there a >>> way for me to get around it without requiring his host to do >>> something, or what? How can I do this? >> >> Manually break the SQL file into several pieces. You may need to >> duplicate some statements at the top and tail of the main file in each >> part and also make sure that you duplicate any USE DATABASE statements >> to ensure you're on the right DB. >> >> You'll also need to make sure you execute them on the server in order. >> >> -Stut > > -Stut: > > This is a relational dB and the several times that I have attempted to > load it in "in parts" has met with failure. > > I was thinking that I could ftp the sql file to the clients server and > then run a php script on his server, something like: > > $sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; > system($sql); > > But, that didn't work -- however -- using mysqldump did download the > file. So, I'm close. Actually reading the php site: http://php.net/system With safe mode enabled, the command string is escaped with escapeshellcmd(). Then http://www.php.net/manual/en/functio...eshellcmd.php: Following characters are preceded by a backslash: #&;`|*?~<>^()[]{}$\, \x0A and \xFF. So your < is being replaced with \< which is why it wouldn't work. -- Postgresql & php tutorials http://www.designmagick.com/ |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
brian wrote:
> tedd wrote: > >> I was thinking that I could ftp the sql file to the clients server and >> then run a php script on his server, something like: >> >> $sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; >> system($sql); >> >> But, that didn't work -- however -- using mysqldump did download the >> file. So, I'm close. >> >> I know that safe_mode is ON, but I'm not sure if that's what's causing >> the failure or something else. >> > > Just a thought: did you pass the full path for $filename? > > Also, pass in a return var to read: > > system($sql, $ret); > > if ($ret === 0) { echo 'sucess'; } > > Sorry, you'll have to hunt down the other return codes that MySQl might > send back. > > If safe_mode is enabled, your command will be escaped with > escapeshellcmd() but that's about it. > > If you can FTP it but can't get a shell is there any chance you could > convince an admin to run the script? > Also, to be on the safe side, you might want to include set_time_limit(0); in your script, also (if you can get system() to work, that is). brian |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Chris wrote:
> tedd wrote: >> >> I was thinking that I could ftp the sql file to the clients server and >> then run a php script on his server, something like: >> >> $sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; >> system($sql); >> >> But, that didn't work -- however -- using mysqldump did download the >> file. So, I'm close. > > > Actually reading the php site: > > http://php.net/system > > With safe mode enabled, the command string is escaped with > escapeshellcmd(). > > Then http://www.php.net/manual/en/functio...eshellcmd.php: > > Following characters are preceded by a backslash: #&;`|*?~<>^()[]{}$\, > \x0A and \xFF. > > So your < is being replaced with \< which is why it wouldn't work. > Right. You could try mysqlimport to get around using the < instead. Strip out all but the ddl statements (CREATE TABLE and friends) and place them into separate files for each table. That is, name each file for the table its data corresponds to. Upload the ddl stuff with phpMyAdmin, then import the data with mysqlimport through your script. However, i think you might need FILE privilege. Instead of putzing around with your existing dump file to copy everything out, you could import everything to a local database (if you don't have it already) and dump out each table to a separate file. brian |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
tedd wrote:
>I was thinking that I could ftp the sql file to the clients server >and then run a php script on his server, something like: > >$sql = "mysql -h$dbhost -u$dbuser -p$dbpass $dbname < $filename"; >system($sql); > >But, that didn't work -- however -- using mysqldump did download the >file. So, I'm close. > >I know that safe_mode is ON, but I'm not sure if that's what's >causing the failure or something else. We got the host to install a newer version of phpMyAdmin. It worked by breaking the dB into tables and then doing the transfer. Thanks to all. Cheers, tedd -- ------- http://sperling.com http://ancientstones.com http://earthstones.com |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
|
|
![]() |
| Outils de la discussion | |
|
|