1

我正在使用 PHP 将文件上传到服务器,然后将路径传递给 SQL 存储过程,该过程BULK INSERT将文件导入 SQL 表。

在 SQL 中,我知道如何让 BULK INSERT 与基于 Windows 和 Unix 的 csv 和 txt 文件一起使用,但我需要知道它是哪种格式。

我希望我可以在 PHP 中解决这个问题,然后将其传递给存储过程。然后我可以ROWTERMINATOR相应地更新。

PHP 中有没有办法检测 csv 或 txt 是基于 Windows 还是 Unix?

对此的任何帮助都会很棒。

谢谢!

4

1 回答 1

3

从文件中获取第一行。检查最后两个字符或最后一个字符是否为:

  • \r\n-> 窗户
  • \n -> Unix

例子:

$lines = file('test.csv');
$line = $lines[0];

switch(TRUE) {
    case substr($line, -2) === "\r\n" :
        echo "windows";
        break;
    case substr($line, -1) === "\n" :
        echo "unix";
        break;
    default :
        // pigs can fly
        echo "unknown line ending"
        break;
}
于 2013-05-02T23:14:42.617 回答