此问题解决了使用 PHP 将 CSV 数据导入 MySQL 数据库时遇到的几个挑战。
提供的代码有效上传 CSV 文件并显示其内容。然而,它面临着文本数据在数据库中显示为 0 以及可能用引号括住导入数据的问题。
1.文本字段显示为 0
要解决此问题,请检查 CSV 文件的编码。确保它是 UTF-8,它支持文本和数字数据。此外,请验证您的数据库表列是否已正确定义以接受文本数据。
2.引用数据
引号可以将数据包含在 CSV 文件中。如果遇到此问题,可以在将数据插入数据库之前使用 mysql_real_escape_string 来清理数据。此函数对特殊字符(包括引号)进行转义,以防止 SQL 注入攻击。
3.忽略标题行
要跳过 CSV 文件的前 X 行(其中可能包含标题),请在开始导入过程之前使用 fseek 和 fgetc 手动浏览文件。
4.数据格式
数据格式在整个导入过程中应保持不变。数值(包括小数)将以其原始格式保留。然而,需要注意的是,MySQL 具有针对各种格式的特定数据类型(例如小数、浮点等),因此相应地定义数据库列至关重要。
5.性能问题
报出“Fatal error”表示超出了PHP的执行时间限制(30秒)。导入大型数据集时经常会遇到这种情况。要解决此问题,您可以增加 PHP 配置文件 (php.ini) 中的 max_execution_time 设置,或实施分块导入机制,以通过多个请求处理较小部分的数据。
替代方法
根据答案中的建议,您可以考虑使用 MySQL 的 LOAD DATA INFILE 功能。这使您可以使用单个 SQL 查询直接导入 CSV 数据,从而提高性能并消除 PHP 处理循环的需要。
以上是如何解决 PHP/MySQL 中的 CSV 数据导入问题?的详细内容。更多信息请关注PHP中文网其他相关文章!