我正在使用Firebird数据库,我需要将 Excel 文件加载到数据库表中。我需要一个能很好地做到这一点的工具。我尝试了一些我在谷歌上找到的,但它们都有一些错误。
由于Excel数据不是我创建的,如果它可以扫描文件并发现里面有什么样的数据并建议在数据库中创建一个表就很好了。
此外,如果我可以将文件与数据库表中已有的数据进行比较,我可以选择要加载哪些数据,哪些不加载。
加载 CSV 文件的工具也很好,我可以在加载之前从 Excel 中“另存为”CSV。
我正在使用Firebird数据库,我需要将 Excel 文件加载到数据库表中。我需要一个能很好地做到这一点的工具。我尝试了一些我在谷歌上找到的,但它们都有一些错误。
由于Excel数据不是我创建的,如果它可以扫描文件并发现里面有什么样的数据并建议在数据库中创建一个表就很好了。
此外,如果我可以将文件与数据库表中已有的数据进行比较,我可以选择要加载哪些数据,哪些不加载。
加载 CSV 文件的工具也很好,我可以在加载之前从 Excel 中“另存为”CSV。
好吧,如果您可以使用 CSV,我猜XMLWizard是适合您的工具。它可以加载 CSV 文件并与数据库数据进行比较。您可以选择要对表格进行的更改。
不要让名字欺骗了你,它确实适用于 XML,但它也适用于 CSV 文件。它还可以估计列数据类型并为您的文件提供 CREATE TABLE 语句。
还有用于 Firebird 和 Interbase 的 EMS 数据导入工具 http://www.sqlmanager.net/en/products/ibfb/dataimport
虽然不是免费的,但它接受多种格式,包括 CSV 和 Excel。
编辑
另一个类似的付费软件工具是 Firebird Data Wizard http://www.sqlmaestro.com/products/firebird/datawizard/
有一些在线工具可以帮助您从 csv 标头/示例转储文件生成 DDL/DML 脚本,请查看:http ://www.convertcsv.com/csv-to-sql.htm 然后您可以使用 sql-workbench 的来自命令行的 Data Pumper或WbImport Tool 。Orbada有支持导入 csv 文件的 GUI。 DBeaver免费版还支持开箱即用地导入 csv。
批量插入
另一种方法是在 Excell 上使用要导出的数据在新单元格中构建公式。该公式包括格式化字符串并根据您在 firebird 中的字段长度调整字段长度。因此,您可以从 txt 编辑器中复制所有这些单元格并从 Excel 中复制过去,因此可以在 Firebird 中使用 BULK INSERT 策略。
在http://www.firebirdfaq.org/faq209/中查看更多详细信息
问题是您是否有要导入的 blob 或 null 数据,因此请查看您是否有这种值以及这种方式是否适合您。如果您已在 txt 文件中格式化数据,则 BULK INSERT 将是快捷方式。
提示:您也可以禁用与表关联的触发器和索引以加速 BULK INSERT,然后启用它们。
罗伯托·诺瓦科斯基
我将 excel 文件加载到 lazarus 电子表格,然后导出到 firebird db。Everythong 很好,唯一的问题是 fpspreadsheet 将仅将带有数字的字符串字段视为数字字段。我可以检查第一行中的标题以查看 excel 文件是否有效。
据我所知,到目前为止,所有回复都集中在本质上读取 Excel(或 CSV)文件并使用 SQL 插入将记录插入 Firebird 数据库的工具上。虽然这可行,但我一直发现这种方法非常缓慢。
这就是为什么我创建了一个工具来读取 Excel 文件并写入一个具有适合 Firebird 外部表的(文本)格式的文件(包括对 UTF8 字符列的支持)和一个 DDL 文件来在 Firebird 中创建外部表。
然后我使用常规 SQL 从外部表中进行选择,根据需要进行转换,然后插入到我想要的任何普通 Firebird 表中。根据我的经验,这种方法的性能比从客户端应用程序插入 SQL 快几个数量级。
我愿意发布该工具。它是用 C# 编写的。让我知道是否有任何兴趣。