使用php将sql文件导入远程mysql数据库

时间:2016-01-05 05:07:36

标签: php mysql

php和mysql的新手, 我试图将导出的sql文件插入远程数据库。 我从1and1尝试此代码,但它无效。

my_mean

## class       : RasterBrick 
## dimensions  : 17, 17, 289, 5829  (nrow, ncol, ncell, nlayers)
## resolution  : 0.05882353, 0.05882353  (x, y)
## extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
## coord. ref. : NA 
## data source : in memory
## names       :    layer.1,    layer.2,    layer.3,    layer.4, ... 
## min values  : 0.19478752, 0.14775996, 0.15108237, 0.14281812, ... 
## max values  :  0.8388662,  0.8577153,  0.8396123,  0.7781535, ... 

2 个答案:

答案 0 :(得分:1)

@srikanth,我有另一种方法可以做到这一点,试试这个

<?php
// Name of the file
$filename = 'churc.sql';
// MySQL host
$mysql_host = 'testdb.example.com';
// MySQL username
$mysql_username = 'test123';
// MySQL password
$mysql_password = 'test789';
// Database name
$mysql_database = 'Test';

// Connect to MySQL server
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
// Select database
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
// Skip it if it's a comment
if (substr($line, 0, 2) == '--' || $line == '')
    continue;

// Add this line to the current segment
$templine .= $line;
// If it has a semicolon at the end, it's the end of the query
if (substr(trim($line), -1, 1) == ';')
{
    // Perform the query
    mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
    // Reset temp variable to empty
    $templine = '';
}
}
 echo "Tables imported successfully";

?>

希望这会对你有所帮助。 :)

注意:不推荐使用mysql,而是可以使用下面的Mysqli,PDO。

$db = new PDO($mysql_host, $mysql_username, $mysql_password);

$sql = file_get_contents('churc.sql');

$qr = $db->exec($sql);

执行大sql文件我上面的答案是不够的所以我建议你看看@Abu sadat回答here

答案 1 :(得分:-1)

尝试以下事项

  • 在尝试执行命令之前,请执行命令的回显

  • 尝试在终端上运行命令 - 检查是否成功

  • 如果成功,请用一个简单的命令替换你的exec(比如'touch /tmp/abc.txt')并检查文件是否被创建。

通过这样做,您试图找出您的mysql命令是否存在问题,或者php中的exec函数是否存在问题