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

标签 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) 平台上。

最佳答案

这是一个使用 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/

相关文章:

MySql 更新 : Can't specify target table for update in FROM clause

linux - Grep 文件中的错误并将它们放入新文件但不覆盖新文件

java - 将 Maven 项目 "YCSB"导入 Eclipse

python - 在 PyCharm 上添加 'import lettuce' 时出错

python - 使用 "."的相对导入在 python 中总是有意义吗?

php - 计分系统有时计算正确,有时计算错误

mysql - 在 Mysql 中将行转置为列

android - 如何让用户(即他的位置)在谷歌地图中移动,其中用户的更新位置是从 MySql 获取的?

iphone - OpenSSL 构建脚本在 Xcode 中作为 'run script' 阶段运行时失败(在 Xcode 之外成功)

linux - 在 Bash 脚本和捕获输出时在后台使用与号 (&) 的 Fork 命令