我想将 CSV 数据导入 mysql 数据库。
另外,我不想先创建表然后再导入。这意味着,如果我的 csv 文件名是 test.csv,它的内容就像
customer_ID,name
10000000,name1
10000001,name2
Run Code Online (Sandbox Code Playgroud)
我应该被执行
mysql> use database {database_name}
mysql> {some_command} test.csv
Run Code Online (Sandbox Code Playgroud)
我应该能够创建具有名称的表test
,并有头它customer_ID
和name
它应该根据test.csv的内容填充。特别some_command
是我正在寻找的灵丹妙药。
知道如何在 MySQL 中完成此操作。当我搜索时,我没有找到一种无需先创建表就可以导入 CSV 数据的方法。
使用 MySQL 自己的工具无法做到这一点。如果您仔细观察,您必须首先创建表,您必须为 csv 文件的字段、可能的索引等指定数据类型。MySQL 无法预测您要使用哪种数据类型,因此这里有一些手动工作要做。
另一方面,您可以使用外部脚本来存档您想要的内容,一个快速而肮脏的示例是:
#!/bin/bash
# create table for import
head -1 test.csv | awk '{split($0,f,","); printf "create table test (%s INT, %s VARCHAR(50));",f[1],f[2]}' | mysql -u USER -pPASS SCHEMA
# import csv
mysql -uUSER -pPASS SCHEMA -e "LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE testcsv FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES"
Run Code Online (Sandbox Code Playgroud)
上面的“脚本”留下了足够的优化空间,它应该只给你一个基本的想法,如何使用常用的 Linux 工具归档你需要的东西。