如何将 CSV 或制表符分隔文件映射到 MySQL 多表数据库
Posted
技术标签:
【中文标题】如何将 CSV 或制表符分隔文件映射到 MySQL 多表数据库【英文标题】:How to Map a CSV or Tab Delimited File to MySQL Multi-Table Database 【发布时间】:2012-04-08 02:28:15 【问题描述】:我有一个相当大的 XLS 文件,客户提供了总共 830 个标签/表格。
我使用 phpMyAdmin(显然是 mysql)设计了一个多表数据库来存储其中的信息,并手动填充了其中大约 5 张表格以确保数据适合设计的数据库。
是否有软件或某种工具可以帮助我格式化此 XLS 文档并将其映射到数据库中的正确位置?
【问题讨论】:
【参考方案1】:根据to this thread you can import a csv file exported from excel用php。
引用@noelthefish
您似乎在这里使用 PHP,这是 PHP 中内置的一个函数
array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure [, string $escape ]]]] ) <?php $row = 1; $handle = fopen("test.csv", "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) $num = count($data); echo "<p> $num fields in line $row: </p>\n"; $row++; for ($c=0; $c < $num; $c++) echo $data[$c] . "\n"; fclose($handle); ?>
这是你需要的最基本的东西。你当然会投入 while 循环中的数据库更新部分。取出 ECHO 语句也是如此,除非您正在调试但基本上使用 稍加改动,这小段代码就可以满足您的需要。如果 您需要更多信息,请查看 uk.php.net
【讨论】:
【参考方案2】:可以将电子表格中的数据导入 Access 并将字段映射到您想要的任何表/列。也可以使用 ODBC 连接器将 Access 连接到 MySQL DB,本质上是using Access as a front-end to MySQL。
或者,您可以按照 toomanyairmiles 的建议进行操作,只需编写 PHP 代码即可将 CSV 数据转换为 MySQL DB 所需的格式。当我们需要将来自不同来源的销售数据导入内部销售/版税跟踪系统时,这就是我过去所做的。如果您需要频繁导入,我建议自动化系统(例如通过 Excel 宏)将单个工作表导出到单个目录中的 CSV,或者,如果更方便,您可以将它们压缩在一起并将 zip 文件上传到PHP 应用程序。
如果您要对 MySQL 进行批量导入,您可能需要考虑使用 LOAD DATA INFILE
,通常是 the fastest way to import data into MySQL,这样在您按摩后将新的 CSV 文件写入磁盘实际上会更快数据,然后使用 LOAD DATA INFILE
而不是直接批量处理 INSERT
。在我的 Intranet 上执行此操作实际上将插入时间从超过 3 秒(已经比大约 3 分钟有所改进。它需要做数千个 INSERT
s)减少到 240 毫秒。
【讨论】:
以上是关于如何将 CSV 或制表符分隔文件映射到 MySQL 多表数据库的主要内容,如果未能解决你的问题,请参考以下文章
Spark-SQL:如何将 TSV 或 CSV 文件读入数据框并应用自定义模式?
使用 OpenOffice Calc 打开 Excel 文件并转换为 CSV 或制表符分隔