如何将 Excel 或 CSV 文件加载到 Firebird 中?
Posted
技术标签:
【中文标题】如何将 Excel 或 CSV 文件加载到 Firebird 中?【英文标题】:How to load Excel or CSV file into Firebird? 【发布时间】:2010-01-22 00:29:57 【问题描述】:我正在使用Firebird 数据库,我需要将 Excel 文件加载到数据库表中。我需要一个能很好地做到这一点的工具。我尝试了一些我在谷歌上找到的,但它们都有一些错误。
由于Excel数据不是我创建的,如果它可以扫描文件并发现里面有什么样的数据并建议在数据库中创建一个表就很好了。
另外,如果我可以将文件与数据库表中已有的数据进行比较,我可以选择加载哪些数据,哪些不加载。
加载 CSV 文件的工具也很好,我可以在加载之前从 Excel 中“另存为”CSV。
【问题讨论】:
【参考方案1】:好吧,如果您可以使用 CSV,我猜XMLWizard 是适合您的工具。它可以加载 CSV 文件并与数据库数据进行比较。您可以选择要对表格进行的更改。
不要让名字欺骗了你,它确实适用于 XML,但它也适用于 CSV 文件。它还可以估计列数据类型并为您的文件提供 CREATE TABLE 语句。
【讨论】:
它不是免费的(我希望有一些免费软件工具),但它似乎工作得很好。看来这正是我想要的,谢谢。【参考方案2】:你试过FSQL吗?
这是一款与 Firebird 的标准 ISQL 非常相似的免费软件,但具有一些额外的功能,例如从 CSV 文件导入数据。
我已经将它与 DBF 文件一起使用,效果很好。
【讨论】:
【参考方案3】:还有用于 Firebird 和 Interbase 的 EMS 数据导入工具 http://www.sqlmanager.net/en/products/ibfb/dataimport
虽然不是免费的,但它接受多种格式,包括 CSV 和 Excel。
编辑
另一个类似的付费软件工具是 Firebird Data Wizard http://www.sqlmaestro.com/products/firebird/datawizard/
【讨论】:
【参考方案4】:有一些在线工具可以帮助您从 csv 标头/示例转储文件生成 DDL/DML 脚本,请查看:http://www.convertcsv.com/csv-to-sql.htm 然后,您可以从命令行使用 sql-workbench 的 Data Pumper 或 WbImport Tool。 Orbada 有支持导入 csv 文件的 GUI。 DBeaver免费版还支持开箱导入csv。
【讨论】:
【参考方案5】:批量插入
另一种方法是在 Excell 上使用要导出的数据在新单元格中构建公式。该公式包括格式化字符串并根据您在 firebird 中的字段长度调整字段长度。因此,您可以将所有这些单元格从 Excel 中复制到 txt 编辑器中,这样就可以在 Firebird 中使用 BULK INSERT 策略。
在http://www.firebirdfaq.org/faq209/查看更多详情
问题是您是否有要导入的 blob 或 null 数据,因此请查看您是否有这种值以及这种方式是否适合您。 如果您已在 txt 文件中格式化数据,则 BULK INSERT 将是快捷方式。
提示:您也可以禁用与表关联的触发器和索引以加速 BULK INSERT,然后启用它们。
罗伯托·诺瓦科斯基
【讨论】:
【参考方案6】:我将 excel 文件加载到 lazarus 电子表格,然后导出到 firebird db。 Everythong 很好,唯一的问题是 fpspreadsheet 将仅将带有数字的字符串字段视为数字字段。我可以检查第一行的标题,看看excel文件是否有效。
【讨论】:
您的回复似乎很轻松。也许添加要遵循的步骤或图像会很棒。【参考方案7】:据我所知,到目前为止,所有回复都集中在本质上读取 Excel(或 CSV)文件并使用 SQL 插入将记录插入 Firebird 数据库的工具上。虽然这很有效,但我一直发现这种方法非常缓慢。
这就是为什么我创建了一个工具来读取 Excel 文件并写入一个具有适合 Firebird 外部表的(文本)格式的文件(包括对 UTF8 字符列的支持)和一个 DDL 文件以在 Firebird 中创建外部表。
然后我使用常规 SQL 从外部表中进行选择,根据需要进行转换,然后插入到我想要的任何普通 Firebird 表中。根据我的经验,这种方法的性能比从客户端应用程序插入 SQL 快几个数量级。
我愿意发布该工具。它是用 C# 编写的。如果有任何兴趣,请告诉我。
【讨论】:
以上是关于如何将 Excel 或 CSV 文件加载到 Firebird 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从单个 csv/excel 文件传输到多个 oracle 表
将超过 255 个字符从 excel 导入到 sql server(上一个问题 - 如何使用 ssis 将文本限定 CSV 动态加载到 sql server)
如何使用Python asammdf将MDF导出到Excel或CSV
如何将数据从闪亮的应用程序写入exce / csv文件?恰好我想将股票价格值的值写入excel / csv文件
是否可以通过 PHP 代码将 excel csv 文件直接打开到 microsoft excel 或其他 excel 支持的应用程序中