如何在linux中创建批量mysql上传脚本 [英] how to create a bulk mysql upload script in linux
问题描述
我有一个mysql数据库与一个表具有相同的列名称作为csv文件,我收到。我以前用一个windows批处理文件上传到mysql。
I have a mysql datbase with a tables that have the same column names as csv files that i recieve. I used to use a windows batch file to upload then into 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脚本。
I need to turn this into a linux script.
任何想法。
推荐答案
以下是在linux上做类似操作的方法:
Here's how you'd do something similar on 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),不知道是否是你想要的,但它真的很容易改变。
此外,最后一行只是回显命令,而不是实际执行它。如果你想执行它,只要删除回声和引号。
I noticed that you are sending the output to 2 files (importalarm.sql and importcsv.sql), not sure if it's what you want, but it's really easy to change. Also, the last line is just echoing the command, not actually executing it. If you want to execute it, just remove the echo and quotes.
这篇关于如何在linux中创建批量mysql上传脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!