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