[英]Generic mysql file loader script bash
我有几十个不同长度和列的 csv 文件,我需要为它们创建表并从文件中加载数据。
我知道创建简单一次性表的一般语法。
create table test.example
(Email varchar(256),
Date date default null,
etc etc);
load data local infile 'example_file.csv' into table test.example
fields terminated by ','
optionally enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
我试图找出一种方法来加快速度并尽可能创建一个通用的 MySQL shell 脚本,以便我可以快速上传这几十个文件。 我正在设想一些可以参数化文件名并将字段设置为通用 varchar(256) 的东西。 这可能吗?
是的,这是可能的:)
您可以创建一个类似于此的脚本upload_csv_to_mysql_script.sh
。
#!/usr/bin/env bash
# Purpose: To insert data from a CSV file into the mysql table
db_name="testdb"
input_file=$1
table_name="test_table"
table_columns="$(head -n1 ${input_file} | sed s/,/' varchar(256), '/g | sed s/$/' varchar(256)'/g)"
echo "create table ${db_name}.${table_name} ( ${table_columns}) ;
alter table ${db_name}.${table_name} change column state state char(2) ;
load data local infile '${input_file}' into table ${db_name}.${table_name}
fields terminated by ','
optionally enclosed by '\"'
lines terminated by '\n'
ignore 1 lines ;" > /tmp/mysql_query.sql
mysql -u'username' -p'password' ${db_name} < /tmp/mysql_query.sql
然后,您可以通过将CSV 文件传递给脚本来运行脚本。
$ ./upload_csv_to_mysql_script.sh test.csv
我希望这是你所需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.