通用mysql文件加载器脚本bash

时间:2018-02-12 19:42:54

标签: mysql sql bash shell

我有几十个不同长度和列的csv文件,我需要为文件中的数据创建表格并加载。

我知道创建简单的一次性表的一般语法。

The client 'xxxx@xxxxxx.co.uk' with object id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.ContainerRegistry/registries/listCredentials/action' over scope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx/resourceGroups/xxxxxxxxxxxxx/providers/Microsoft.ContainerRegistry/registries/xxxxxxxxxxxx'.

我试图想办法加快速度,并尽可能创建一个通用的MySQL shell脚本,这样我就可以快速上传这几十个文件。我设想了一些可以参数化文件名并将字段设置为常规varchar(256)的东西。这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的:)

您可以创建类似于此的脚本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

我希望这是你所需要的。