使用 phpMyAdmin 将使用长数字的电子表格导入 MySQL 的最佳方法
Posted
技术标签:
【中文标题】使用 phpMyAdmin 将使用长数字的电子表格导入 MySQL 的最佳方法【英文标题】:Best way to import a spreadsheet using long numbers onto MySQL using phpMyAdmin 【发布时间】:2014-01-01 10:14:45 【问题描述】:我最近一直在为我的公司收集数据以创建 mysql 数据库。在使用 php 执行此操作时,它可用于使用网页界面查看、添加、编辑和删除。
我目前创建了一个原型,允许我通过将 .XLS 或 XLSX 工作表转换为 .CSV 格式来导入这些数据,然后通过 PHPMyAdmin 导入。直到最近我才发现使用这种方法的障碍。在我的电子表格中,我有几列代表条形码,这些条形码的大小各不相同,有些超过 15 位。 Excel 对其表示的内容有限制,不幸的是,它会显示以下内容:
这显然可以通过将 excel 列格式化为数字、文本等来更改。但是,当保存为 CSV 格式时,它变得不可能更改,因为每次关闭文档时它都会恢复到原始状态。
在 Notepad++ 中查看 CSV 文件时,条形码会正常显示,但当我将文件导入 PHPMyAdmin 时,条形码会以与 CSV 相同的方式显示。
所以我的问题分为两部分:
-
导入电子表格的最佳格式是什么?
如何解决这种烦人的格式。
【问题讨论】:
它唯一的 excels 显示使它看起来像使用该字段作为“文本”导出到 csv 将导致整个数字被输出到 csv 中,然后您可以正确导入。将文件另存为 .CSV 将丢失您制作的任何列格式,因为 csv 是纯文本文件,它不存储您在 excel 中设置的列格式信息。您必须为此保存在 .xls(x) 等中 我尝试使用“OpenDocument 电子表格”格式来解决这个问题。此方法在导入时保持格式,但由于我的文件很大,MySQL 超时。 不要通过 phpmyadmin 导入您使用 odf 或 xls 存储主文件,然后将其导出为 csv(在记事本中打开的原始 csv 将包含正确的数字!)并编写一个简单的php导入脚本 @Dave 我试试看。你知道任何有用的教程链接来加快速度吗?谢谢 php 中唯一需要的就是 fgetcsv(),然后循环通过它来导入漂亮而简单的 4 行代码就可以了 【参考方案1】:我会说您在电子表格中的数据存储不正确;它应该被视为文本而不是数字。同样在数据库中。这将处理您的问题 #2 并防止这成为您的数据库中的问题。它不是真正的数字表示(例如任何东西的计数);它是一串识别字符,恰好都是数字。在我看来,它应该表示为字符串列类型,例如 CHAR 或 VARCHAR。
我相信您说过 CSV 看起来不错(如 5028252188661),因此如果您将 MySQL 表设置为期望字符串而不是数字类型,您在导入后也应该会看到正确的值。
【讨论】:
@Issac 您在该数据中的权利应以文本形式存储。我编辑了一张测试表并将数据存储为文本。这现在允许我在字段中使用超过 15 位的值。关于 XLS 到 CSV 的转换,该字段仍然产生 5.03E+12。抱歉回复晚了。以上是关于使用 phpMyAdmin 将使用长数字的电子表格导入 MySQL 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
将excel电子表格读入pandas DataFrame时将数字转换为字符串