PHP 自动执行 SQL 文件并导入数据库

Ivy
Ivy
发布时间:2026-10-13| 6人浏览过
原创

在 Web 开发中,经常需要编写脚本将预设的 SQL 数据批量导入 MySQL 数据库。本教程展示如何使用 PHP 结合 mysqli 扩展,安全地读取 .sql 文件并按顺序执行建表或插入数据的操作,同时支持自动创建目标数据库。

准备工作

确保你的 PHP 环境已启用 mysqli 扩展。你需要一个待执行的 SQL 文件(例如 test.sql)和数据库的连接信息(主机名、用户名和密码)。注意:若 SQL 文件中包含创建新库的语句,需手动删除以避免路径冲突;若需程序自动创建,见下文步骤。

第1步:建立数据库连接

首先实例化 mysqli 对象以连接到 MySQL 服务器。DB_HOST、DB_USER 和 DB_PASS 请替换为实际的环境变量或字符串配置。

$dbHost = 'localhost'; // 或 DB_HOST
$dbUser = 'root';      // 或 DB_USER
$dbPass = '';          // 或 DB_PASS

$_mysqli = new mysqli($dbHost, $dbUser, $dbPass);

if (mysqli_connect_errno()) {
    exit('连接数据库出错: ' . mysqli_connect_error());
}

第2步:读取并解析 SQL 文件内容

使用 file_get_contents 将 SQL 文件的全部内容读入内存,然后通过 explode 按分号 ; 拆分为单独的语句数组。这允许我们遍历每一条 SQL 命令。

// 读取文件内容
$sqlContent = file_get_contents('test.sql');
// 按分号拆分,注意 trim 去除空白符
$statements = array_filter(array_map('trim', explode(';', $sqlContent)));

第3步:逐条执行 SQL 语句

遍历拆分后的语句数组,依次调用 query() 方法执行。建议在循环中添加简单的错误检查,以便在遇到语法错误或权限问题时能及时捕获。

foreach ($statements as $statement) {
    if (empty($statement)) {
        continue;
    }
    
    echo "执行: $statement\n";
    if (!$_mysqli->query($statement)) {
        echo "执行失败: " . $_mysqli->error . "\n";
        break;
    }
}

第4步:自动创建并使用目标数据库(可选)

如果 .sql 文件中仅包含数据操作而缺少 USE database_name; 或库创建语句,你可能需要手动指定数据库。以下代码演示了在循环外先创建数据库(若不存在),然后切换到该数据库的流程。

// 定义目标数据库名称
$databaseName = 'my_target_db';

// 1. 创建数据库(如果不存在)并设置字符集
$_mysqli->query("CREATE DATABASE IF NOT EXISTS `{$databaseName}` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;");

// 2. 选择并使用该数据库
$_mysqli->select_db($databaseName);

// 现在后续的所有 query() 都会在这库中执行
// ... 在此处重新加载并执行 SQL 文件中的语句 ...

完成判断与清理

当所有语句执行完毕且无报错时,表示导入成功。务必关闭数据库连接以释放资源。

$_mysqli->close();
$_mysqli = null;
echo "SQL 导入完成。";

注意事项与排错

  • 分隔符问题:如果你的 SQL 文件中使用了存储过程或触发器,其中可能包含非分号的自定义分隔符(如 $$),直接按分号拆分会导致语句截断。此类情况建议使用专门的分隔符解析逻辑或专用导入工具。
  • 超时限制:大批量数据导入可能会超出 PHP 的执行时间限制(max_execution_time)。请在命令行环境中运行此脚本,或适当调大 PHP 配置中的超时参数。
  • 安全性:不要在生产环境中暴露数据库密码到脚本源码中,建议使用环境变量或配置文件管理敏感信息。

以上就是使用 PHP 执行 SQL 文件并将数据导入到数据库的详细内容,更多关于 PHP 数据库操作技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。