Php 是否可以使用“加载数据填充”将所有文件数据插入到一列中?
我们将报告文件存储在mysql数据库表中。我们当前的实现如下所示:Php 是否可以使用“加载数据填充”将所有文件数据插入到一列中?,php,mysql,large-files,load-data-infile,Php,Mysql,Large Files,Load Data Infile,我们将报告文件存储在mysql数据库表中。我们当前的实现如下所示: // File was generated and placed on the disk, now we're going // to store it in the database $file = file_get_contents($path); $report->csv_data = $file; $report->save(); // UPDATE reports SET csv_data = ... W
// File was generated and placed on the disk, now we're going
// to store it in the database
$file = file_get_contents($path);
$report->csv_data = $file;
$report->save(); // UPDATE reports SET csv_data = ... WHERE id = ?
好吧,这会导致内存不足错误,并产生更大、数百兆字节的报告。我尝试使用PDO::PARAM_LOB,但这不起作用,它会将整个文件加载到内存中
所以我尝试使用mysql的LoadDataInfle来插入文件,但它通常用于解析和批量导入数据我不想解析报表数据,我只需要将整个文件内容放在表中一行的一列中。这是我一直在修补的东西:
加载数据填充'/web/reportTest.csv'
进入表report.reports
以“您的数据库结构是什么”结尾的字段?如果您的csv是这样的:“bla,bla,blou,…,[+255 char],…”并且您的列是varchar(255),如果它不工作,则是正常的。注意:如果不希望所有csv都在一列和一行中,则需要以正确的字符结尾行。您可以共享您的.csv和结构表吗?我正在尝试将分隔符设置为结果集中永远不会出现的字符。您是否对一个“小”文件(例如,1-2兆字节)尝试过相同的设置?@Xenofexs这正是我要做的,将整个csv文件加载到一行中的一列中。csv数据和结构会有所不同,它们只是我们系统中不同的用户生成报告。csv_数据是一个长文本列。@Akina不,还没有。我刚刚用真实的报告做了一些测试?