繁体   English   中英

通用 mysql 文件加载器脚本 bash

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM