簡體   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