繁体   English   中英

导入 LOAD DATA INFILE 时将我的 php 变量连接到 csv 数据

[英]Concatenate my php variable to csv data when importing LOAD DATA INFILE

我需要将一些 csv 文件导入 mysql。

我最近发现有关 LOAD DATA INFILE 的信息,据我了解,我查看了手册,将每一行 .csv 文件导入到数据库中。

我想知道是否有一个选项可以将额外的值连接到 csv 文件包含的内容。

例如:我的表有 3 列。

MYTABLE(#name,#email,company_adrs);

csv 文件只有“姓名、电子邮件”的数据,我在 php 变量中有地址。

使用正常循环,我将按如下方式实现:

//open file
while (/* not end of file, read eachline*/)
{
  $current_line_of_csv_file; // contains: "John,john@john.com" without the 3rd column
  $myAddrsVar= mysqli_real_escape_string($db, $_POST['adrs']); //"44 company st" 
  $insert = $db->query("INSERT MYTABLE (name,email,company_adrs) VALUES ( $current_line_of_csv_file,'".$myAddrsVar."')");

}

使用这种方法,我必须遍历 csv 的每一行并在每次迭代中进行查询。

我想知道 LOAD DATA INFILE 是否有一种方法可以将我的数据连接到 csv 文件? 如果是这样,我该如何实现?

提前致谢

鉴于您的情况,我建议使用 PHP all-in-all 并以这种方式将数据插入 MySQL。

https://www.php.net/manual/en/function.str-getcsv.php可以帮助您将 CSV 解析为数组。 将地址添加到数组中。 现在,您将在数组中拥有数据集。

使用此处所示的准备好的语句https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection并一个接一个地插入数据。

使用事务以便插入所有数据或不插入任何数据。 请参阅如何在 mysqli 中启动和结束事务? .

我会避免使用 LOAD DATA INLINE 因为数据量不是那么大。 如果你真的想使用它并添加另一列,你可以使用SET语句。 这里有一个例子: Add extra column of data when using LOAD DATA LOCAL INFILE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM