我有一个 MySQL 表,需要通过 LOAD DATA INFILE 命令定期更新,该命令从 .csv 文件获取结构化数据。最初,我只需每周对单个 .csv 文件执行一次 LOAD DATA 命令,现在情况正在好转,我需要每周多次从多个 .csv 文件导入数据。我认为 MySQL 本身没有一种机制可以迭代目录的内容,查找所有 .csv 文件,然后从每个文件加载数据,然后再继续下一个。
所以我认为我需要某种命令行脚本来迭代给定目录中给定类型的所有文件,将文件名传递到 mySQL LOAD DATA INFILE 命令中,等待 mySQL 完成处理该文件,然后移动继续处理下一个文件,直到处理完所有文件。我希望有一天能学习 bash 脚本,所以如果 bash 提供了一个很好的方法来做到这一点,我想开始使用 bash。或者如果 mySQL 有办法做到这一点,那也很好。
这是在 Macbook (iOS) 平台上。
最佳答案
这是一个使用 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>.
它将扫描数据文件夹下的所有 csv 文件,然后使用该 csv 运行加载数据
关于mysql - 通过多个文件导入填充 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331900/