php - 使用 PHP 将制表符分隔的文本文件读入 MySQL 表

标签 php mysql import

我正在尝试将一系列制表符分隔的文本文件读入现有的 MySQL 表中。我的代码非常简单:

$lines = file("import/file_to_import.txt");

foreach ($lines as $line_num => $line) {
    if($line_num > 1) {
        $arr = explode("\t", $line);
        $sql = sprintf("INSERT INTO my_table VALUES('%s', '%s', '%s', %s, %s);", trim((string)$arr[0]), trim((string)$arr[1]), trim((string)$arr[2]), trim((string)$arr[3]), trim((string)$arr[4]));
        mysql_query($sql, $database) or die(mysql_error());
    }
}

但是无论我做什么(因此在 sprintf 语句中的每个变量之前进行强制转换)我都会得到“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以了解要使用的正确语法在第 1 行的 '' 附近"错误。

我回显代码,将其粘贴到 MySQL 编辑器中,它运行良好,只是无法从 PHP 脚本执行。

我做错了什么??

更新:以下是回显的 SQL:

INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A1', 'GBEN', '2.50-2.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A2', 'GBEN', '3.00-3.49m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A3', 'GBEN', '3.50-3.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A4', 'GBEN', '4.00-4.49m')

有趣的是,我现在让它在表中创建了正确的行数,但它插入的值是空的...

这可能是源文本文件中的编码问题??

最佳答案

您不需要字符串转换,数据已经是字符串。

确保文件数据中没有引号。在运行之前回显 sql 字符串,看看是否有明显的错误。

将 SQL 更改为:

"INSERT INTO my_table (`field1Name`, `field2Name`, `field3Name`, `field4Name`, `field5Name`) VALUES('%s', '%s', '%s', '%s', '%s');"

此更改包括字段名称,并引用最后两个值。

关于php - 使用 PHP 将制表符分隔的文本文件读入 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745637/

相关文章:

java - 如何禁用自动 Java 静态导入?

php - 从一个表中选择,并在同一查询中从另一个表中计数

php - ajax 响应 json 数据未在下拉列表中设置

php - fatal error : Uncaught Error ( php mysql )

java - 免费 API 可将地址簿从 gmail、yahoo aol 和 hotmail 导入到 Web 应用程序

testing - 如何将类从一个项目测试包导入 netbeans 中另一个项目的测试包?

php - 如何获取网站上相对时间的MySQL表的时间戳

php - 如何从中间件向 Laravel 的 IOC 容器添加对象

mysql - 如何以 N 行为一组进行 GROUP BY?

php - 在 MySQL 和 PHP 中创建好友关系