mysql - 如何在 linux 中创建批量 mysql 上传脚本

标签 mysql linux shell csv batch-processing

我有一个 mysql 数据库,其中的表与我收到的 csv 文件具有相同的列名。我曾经使用 windows 批处理文件上传到 mysql。

@echo off
echo TRUNCATE TABLE `alarms`; > importalarm.sql
echo Creating list of MySQL import commands
for %%s in (*.csv) do 
  echo LOAD DATA LOCAL INFILE '%%s' INTO TABLE `alarms` 
       FIELDS TERMINATED BY ',' ENCLOSED BY ' ' 
       ESCAPED BY '/'LINES TERMINATED BY '\r\n' IGNORE 1 LINES; >> importcsv.sql;
echo mysql -u root -p uninetscan < importalarm.sql

我需要把它变成一个 linux 脚本。

任何想法。

最佳答案

这是在 Linux 上执行类似操作的方法:

#!/bin/bash
echo 'TRUNCATE TABLE `alarms`;' > importalarm.sql
echo "Creating list of MySQL import commands"
for f in *.csv; do
    echo "LOAD DATA LOCAL INFILE '$f' INTO TABLE \`alarms\` FILEDS TERMINATED BY ',' ENCLOSED BY ' ' ESCAPED BY '/' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;" >> importcsv.sql;
done
echo 'mysql -u root -p uninetscan < importalarms.sql'

我注意到您将输出发送到 2 个文件(importalarm.sql 和 importcsv.sql),不确定它是否是您想要的,但它真的很容易更改。 另外,最后一行只是回显命令,而不是实际执行它。如果你想执行它,只需删除 echo 和引号。

关于mysql - 如何在 linux 中创建批量 mysql 上传脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4784332/

相关文章:

python - 如何杀死多处理模块创建的僵尸进程?

php - WordPress 站点的 Linux/PHP 服务器设置

linux - 为 Web 应用程序设置 Linux 服务器 (Apache)

git - 无法从 crontab 作业中提交 git

mysql - 简单 SQL 最大列查询

PHP 事务在我的 wamp 上不起作用

php - PHP 中的幻影 mysql_error

mysql - 使用 'regexp' 的相同查询在 mysql 中给出不同的结果

java - 测试 Java 是否支持 -XX 选项

shell - AWS ECS故障-运行Shell脚本来启动程序