php - 这是导入 MySQL 数据库的最佳 CSV 文件格式吗

标签 php mysql bash csv

我有以下格式的数据(样本数据,有很多行):

"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 的最佳格式/做法是什么?

一些具体的问题是:

  1. 日期应该是“2015-10-06”
  2. 第 2、3 和 4 列是否应为带双引号的字符串格式,例如“0427”
  3. 对于列标题,我是否应该删除所有空格和括号
  4. 还有什么

在将数据导入我的数据库之前,也许我的数据看起来会更好:

  • 用下划线替换所有空格
  • 去掉括号
  • 通过删除双引号将第 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/

相关文章:

php - PHP 查询的逻辑顺序

php - ajax-PHP-MySQL 是聊天室应用程序的良好组合吗?

php - 单击时,切换图像以及 MySQL 数据库中的值

php - 更改注册用户1=123

linux - 在 NodeJS 进程中创建 bash 包装器

php - 选择正在传递的项目值而不是文本值到mysql数据库实时成本计算

php - 单击 'Cancel' 按钮后销毁 $_SESSION

linux - 如何使用 ipcalc 在 Bash 脚本中验证 IP?

mysql - 将两列合并为一列

json - 从 bash 变量和关联数组创建 json