通过多个文件导入填充MySQL表

时间:2018-03-17 02:23:01

标签: mysql bash import

我有一个MySQL表,需要通过LOAD DATA INFILE命令定期更新,该命令从.csv文件获取结构化数据。最初我只需要每周一次为单个.csv文件执行此LOAD DATA命令,现在情况正在好转,我需要每周多次从多个.csv文件导入数据。我不认为MySQL本身有一种机制来迭代目录的内容,查找所有.csv文件,然后从每个文件加载数据,然后继续下一步。

所以我认为我需要某种命令行脚本来迭代给定目录中给定类型的所有文件,将文件名传递给mySQL LOAD DATA INFILE命令,等待mySQL完成处理该文件,然后移动转到下一个文件,直到处理完所有文件。我想有一天学习bash脚本,所以如果bash提供了一个很好的方法,我想开始使用bash。或者,如果mySQL有办法做到这一点,那也会很好。

这是在Macbook(iOS)平台上。

1 个答案:

答案 0 :(得分:0)

这是一个使用bash的简单解决方案。假设所有.csv都放在Data文件夹中。

Open a terminal then go to the folder on the same level with Data
Type this "vi script.sh" to open an editor
Copy/paste below codes:

#!/bin/bash
for filename in ./Data/*.csv; do
    <use load data  using "$filename">
done

Press ESC then :
Type wq! then enter -> to save (w) and quit
Change mode of the script:   
      Type chmod 775 script.sh
Then run this script:
      sh <script.sh>. 

它将扫描Data文件夹下的所有csv文件,然后使用该csv

运行加载数据