我有一个 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/