【问题标题】:How to import a .txt file into a mysql database in different tables如何将 .txt 文件导入到不同表中的 mysql 数据库中
【发布时间】:2019-02-25 23:38:12
【问题描述】:

我有兴趣将这个 5000 行的 .txt 文件导入 mysql 数据库。

 P|1|A PRODUCT|1|0002000|204|123|
 P|2|ANOTHER PRODUCT|10000371|0001990|055|031|
 B|055|A BRAND NAME|
 B|204|ANOTHER BRAND NAME|
 G|123|GROUP NAME|
 G|031|ANOTHER GROUP NAME|
 

其中 P 表示该行指的是“产品”表,B 表示“品牌”表,G 表示“组”。我需要它们在数据库中分开。 如果仅使用 sql 不可能做到这一点,有什么方法可以让我使用 PHP 获得我想要的结果?

【问题讨论】:

  • 恐怕你将不得不编写一个脚本来做到这一点。
  • 这是一次性导入还是经常发生的过程?你有ProductBrandGroup 的表结构吗?

标签: php mysql insert


【解决方案1】:

php explode 会为你完成这项工作,这里是如何

$data = file_get_contents('data.txt')
// make an array for each line
$lines = explode('/n', $data)
foreach ($lines as $line) {
// Make array  for each part of the line
$eline = explode('|', $line) ;
// $eline[0] is first part that have b or g or p
if ($eline[0] == 'B') {
// the sql code for brands
}
}

如果你愿意,我可以为你完成完整的代码,只需告诉我 sql 查询什么

【讨论】:

    【解决方案2】:

    如果文件按类型分隔,那将是最简单的。我会使用 grep,因为它已经存在并且可以节省在 php 中编写相同的功能:

    grep ^P file.txt > P.txt
    grep ^G file.txt > G.txt
    grep ^B file.txt > B.txt
    

    LOAD DATA LOCAL INFILE 可用于将每个单独的文件导入到自己的表中。确保mysql 客户端以--local-infile 启动,以允许它传递文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 2012-10-23
      • 2013-08-05
      • 2017-10-28
      • 1970-01-01
      • 2016-12-19
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多