我有几十个不同长度和列的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)的东西。这可能吗?
答案 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
我希望这是你所需要的。