XAMPP 并导入 .sql
XAMPP and importing .sql
我有一个 sql 文件,其中包含 1.74+ 百万条记录,这不是您的平均数据库导入。
如果需要,我将上传的最小值从 8MB 限制提高到 128MB,并将内存限制提高到 1GB。在一台有 1GB RAM 的机器上出现内存不足错误之前,只有 251 条记录得到处理,这根本没有意义。尽管声称要导入记录,但像我本地主机这样的网络主机却停滞不前。未压缩文件为 230MB,压缩后为 36MB。
我尝试为我的本地服务器编写例程,但我发现我无法访问或插入数据,我收到访问被拒绝错误 (42000/1044),当我查找它时,它是关于访问的并且需要 root 权限...
有关如何正确拆分文件或通过脚本导入的任何建议,因为我不敢说 PHPMyAdmin 丢失了情节。它没有太大帮助,而且大部分文档都假设您可以物理访问系统,所以我在文档中找不到任何有用的东西,我一直在兜圈子......帮助!
我最近在 SO (here) 中找到了关于这个的答案。 我将尝试再次搜索它以提供其 URL。 这是我用来完成相同任务的代码。
ini_set('max_execution_time', 0);
set_time_limit(0);
ini_set('upload_max_filesize', '1000M');
// Temporary variable, used to store current query
$templine = '';
$filename = 'filename.sql';
// 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
mysqli_query($connection, $templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysqli_error($connection) . '<br /><br />');
// Reset temp variable to empty
$templine = '';
}
}
echo "Tables imported successfully";
使用基于浏览器的浏览器 UI 处理大型记录并不是一个好主意。
1) 如果它是 SQL 文件尝试使用 mysql 命令行
mysql -uuser -ppassword db_name < file.sql
2) 如果是 CSV 文件使用 mysqlimport,table 名称应与文件名匹配(不带扩展名),您可以定义分隔符以及是否忽略第一行(如果第一行是 headers).
3) 或者尝试 HeidiSQL,但我发现 command-line 效果最好,即使在 Windows.
上也是如此
4) 如果你的选择只是安装的phpmyadmin,而你不能上传任何脚本如Adminer到远程服务器,那么你剩下有限的选择之一就是拆分SQL file/queries 并处理它们。下面给出拆分正确和错误的例子:
bigfile.sql
Insert into tablex values ('A','AA'),
('B','BB'),('C','CC'),('D','DD');
拆分为
file1.sql
Insert into tablex values ('A','AA'), ('B','BB');
files2.sql
Insert into tablex values ('C','CC'), ('D','DD');
你不应该像下面那样拆分它......它会失败......
file1.sql
Insert into tablex values ('A','AA'),
files2.sql
('B','BB'), ('C','CC'), ('D','DD');
我有一个 sql 文件,其中包含 1.74+ 百万条记录,这不是您的平均数据库导入。
如果需要,我将上传的最小值从 8MB 限制提高到 128MB,并将内存限制提高到 1GB。在一台有 1GB RAM 的机器上出现内存不足错误之前,只有 251 条记录得到处理,这根本没有意义。尽管声称要导入记录,但像我本地主机这样的网络主机却停滞不前。未压缩文件为 230MB,压缩后为 36MB。
我尝试为我的本地服务器编写例程,但我发现我无法访问或插入数据,我收到访问被拒绝错误 (42000/1044),当我查找它时,它是关于访问的并且需要 root 权限...
有关如何正确拆分文件或通过脚本导入的任何建议,因为我不敢说 PHPMyAdmin 丢失了情节。它没有太大帮助,而且大部分文档都假设您可以物理访问系统,所以我在文档中找不到任何有用的东西,我一直在兜圈子......帮助!
我最近在 SO (here) 中找到了关于这个的答案。 我将尝试再次搜索它以提供其 URL。 这是我用来完成相同任务的代码。
ini_set('max_execution_time', 0);
set_time_limit(0);
ini_set('upload_max_filesize', '1000M');
// Temporary variable, used to store current query
$templine = '';
$filename = 'filename.sql';
// 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
mysqli_query($connection, $templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysqli_error($connection) . '<br /><br />');
// Reset temp variable to empty
$templine = '';
}
}
echo "Tables imported successfully";
使用基于浏览器的浏览器 UI 处理大型记录并不是一个好主意。
1) 如果它是 SQL 文件尝试使用 mysql 命令行
mysql -uuser -ppassword db_name < file.sql
2) 如果是 CSV 文件使用 mysqlimport,table 名称应与文件名匹配(不带扩展名),您可以定义分隔符以及是否忽略第一行(如果第一行是 headers).
3) 或者尝试 HeidiSQL,但我发现 command-line 效果最好,即使在 Windows.
上也是如此4) 如果你的选择只是安装的phpmyadmin,而你不能上传任何脚本如Adminer到远程服务器,那么你剩下有限的选择之一就是拆分SQL file/queries 并处理它们。下面给出拆分正确和错误的例子:
bigfile.sql
Insert into tablex values ('A','AA'),
('B','BB'),('C','CC'),('D','DD');
拆分为
file1.sql
Insert into tablex values ('A','AA'), ('B','BB');
files2.sql
Insert into tablex values ('C','CC'), ('D','DD');
你不应该像下面那样拆分它......它会失败......
file1.sql
Insert into tablex values ('A','AA'),
files2.sql
('B','BB'), ('C','CC'), ('D','DD');