我有以下格式的数据(样本数据,有很多行):
"Rec Open Date","number 1","number 2","Data Volume (Bytes)","Device Manufacturer","Device Model","Product Description"
"2015-10-06","0427","70060","137765","Samsung Korea","Samsung SM-G900I","$39 option"
"2015-10-06","7592","55620","0","Apple Inc","Apple iPhone 6 (A1586)","some text #16"
...
我想知道的是,将其导入 mysql 的最佳格式/做法是什么?
一些具体的问题是:
- 日期应该是“2015-10-06”
- 第 2、3 和 4 列是否应为带双引号的字符串格式,例如“0427”
- 对于列标题,我是否应该删除所有空格和括号
- 还有什么
在将数据导入我的数据库之前,也许我的数据看起来会更好:
- 用下划线替换所有空格
- 去掉括号
- 通过删除双引号将第 2、3 和 4 列转换为值
看起来像这样:
"Rec_Open_Date","number_1","number_2","Data_Volume_Bytes","Device_Manufacturer","Device_Model","Product_Description"
"2015-10-06",0427,70060,137765,"Samsung Korea","Samsung SM-G900I","$39 option"
"2015-10-06",7592,55620,0,"Apple Inc","Apple iPhone 6 (A1586)","some text #16"
...
再次只是寻找最佳实践。
下一个问题是是否有一个解析器可以完成所有这些,也许是 bash 或其他等效的?
最佳答案
您可以从命令行使用 mysql load data infile
完成这项工作,如下所述:http://dev.mysql.com/doc/refman/5.7/en/load-data.html
如果您可以控制 csv 文件的格式,任何将加载到数字数据库类型中的值都不应该有引号。正如您所显示的,日期值适用于 mysql DATE 类型。如果您坚持使用该 csv 格式,您可以使用加载数据选项来转换输入值,如下所述:LOAD DATA INFILE easily convert YYYYMMDD to YYYY-MM-DD?该示例是关于日期转换的,但许多其他转换也是可能的。
另请注意,如果您的数据库表已经定义,您可以跳过标题行,因此无需担心标题匹配列名和空格等问题。
关于php - 这是导入 MySQL 数据库的最佳 CSV 文件格式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563420/