Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将包含换行符的.csv文件上载到MySQL数据库_Php_Mysql_Database_Csv_Migration - Fatal编程技术网

Php 如何将包含换行符的.csv文件上载到MySQL数据库

Php 如何将包含换行符的.csv文件上载到MySQL数据库,php,mysql,database,csv,migration,Php,Mysql,Database,Csv,Migration,我们正在编写一些php来将数据从Microsoft SQL数据库移动到MySQL数据库。微软的数据包含用户输入的文本,带有换行符和各种古怪的东西 我们的工作流程如下: 从Microsoft SQL数据库中选择php数组(工作正常) 通过循环fputcsv()函数将其处理为.csv: fputcsv($delimiter=',',$enclosure='”,$escape\u char=“\\”; (当我用google sheets打开.csv文件时,它看起来不错) 使用以下代码将.csv文件上载

我们正在编写一些php来将数据从Microsoft SQL数据库移动到MySQL数据库。微软的数据包含用户输入的文本,带有换行符和各种古怪的东西

我们的工作流程如下:

  • 从Microsoft SQL数据库中选择php数组(工作正常)

  • 通过循环fputcsv()函数将其处理为.csv:

    fputcsv($delimiter=',',$enclosure='”,$escape\u char=“\\”;

    (当我用google sheets打开.csv文件时,它看起来不错)

  • 使用以下代码将.csv文件上载到MySQL服务器:

    LOAD DATA LOCAL INFILE  'c:/filename.csv'
    INTO TABLE tablename
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;  ```
    
  • 问题是,当执行步骤3时,生成的MySQL表都是混乱的,因为它似乎与数据中的换行符混淆,认为这是表中的新行


    我注意到MySQL LOAD DATA命令没有将转义字符作为参数,但我似乎找不到一种方法来赋予它。这就是问题所在吗?我们如何才能做到这一点?

    首先,您是否检查了csv文件的EOL?它是在“\n”还是在“\r\n”中?在Windows server上,
    \r\n
    需要终止Linux
    \n工作正常。顺便问一下如何执行
    加载文件。
    如果在
    concat
    中封装,则需要使用
    \\n
    @ooi18退出
    \n
    我不确定如何检查下线,如fputcsv()不将其作为参数,当我使用任何文本编辑器打开它时,它会将新行显示为实际新行。您建议我们如何执行此操作?为了回答您的第二个问题,我们将自行运行LOAD DATA查询