我使用Firebird数据库,我需要将Excel文件加载到数据库表中。我需要一个工具,这样做很好。我尝试了一些我在谷歌上找到的,但他们都有一些错误。由于Excel数据不是由我创建的,如果它可以扫描文件并发现里面的数据类型并建议在数据库中创建一个表,那就太好了。另外,如果我可以将文件与数据库表中已有的数据进行比较,并且可以选择哪些数据要加载,哪些不加载,那就太好了。加载CSV文件的工具也很好,我可以在加载之前从Excel“保存为”CSV。
tp5buhyn1#
好吧,如果你能使用CSV,我想XMLWizard是适合你的工具。它可以加载CSV文件并与数据库数据进行比较。你可以选择你想对表进行的更改。不要让它的名字欺骗了你,它确实可以处理XML,但是它也可以很好的处理CSV文件。它还可以估计列数据库,并为你的文件提供CREATE TABLE语句。
fkaflof62#
你试过FSQL吗?它是一个免费软件,非常类似于Firebird的标准ISQL,但有一些额外的功能,如从CSV文件导入数据。我用它与DBF文件和它的工作正常。
of1yzvn43#
还有用于Firebird和Interbase http://www.sqlmanager.net/en/products/ibfb/dataimport的EMS数据导入工具虽然不是免费的,但它接受各种格式,包括CSV和Excel。
编辑
另一个类似的付费软件工具是Firebird Data Wizard http://www.sqlmaestro.com/products/firebird/datawizard/
hujrc8aj4#
有一些在线工具可以帮助您从CSV头文件/示例转储文件生成XML/DML脚本,请查看:http://www.convertcsv.com/csv-to-sql.htm然后您可以从命令行使用sql-workbench的Data Pumper或WbImport工具。Orbada具有GUI,支持导入CSV文件。DBeaver免费版也支持导入CSV。
nfs0ujit5#
我将excel文件加载到lazarus spreadsheet,然后导出到firebird db。一切都很好,唯一的问题是fpspreadsheet只会将带数字的字符串字段视为数字字段。我可以检查第一行的标题,看看excel文件是否有效。
roejwanj6#
据我所知,到目前为止,所有的回复都集中在基本上读取Excel(或CSV)文件并使用SQL插入将记录插入到Firebird数据库的工具上。这就是为什么我创建了一个工具来读取Excel文件,并编写一个具有适合Firebird外部表(包括对UTF8字符列的支持)的(文本)格式的文件和一个用于在Firebird中创建外部表的文件。然后,我使用常规SQL从外部表中进行选择,根据需要进行强制转换,并插入到我想要的任何普通Firebird表中。根据我的经验,这种方法的性能比从客户端应用程序插入SQL快几个数量级。我愿意发布这个工具。它是用C#写的。如果有兴趣的话请告诉我。
smdnsysy7#
大容量插入另一种方法是在Excel中,您可以在新单元格中构建公式,其中包含要导出的数据。该公式包括根据Firebird中字段的长度将字符串和长度格式化为字段。因此,您可以从Excel中复制所有这些单元格并粘贴到文本编辑器中,因此可以在Firebird中使用BULK重定向策略。查看更多详情http://www.firebirdfaq.org/faq209/问题是,如果你有blob或null数据导入,所以看看你是否有这种值,如果这种方式是给你。如果你有格式化的数据在一个文本文件中,BULK重定向将是快速的方法。提示:您也可以禁用与表关联的触发器和索引来加速BULK重定向,并在启用它们之后。
hc8w905p8#
我写了一个工具,Firebird External Table Generator,它允许你将CSV文件转换成Firebird的外部表格文件格式。它是免费的,开源的。在其基本用法中,该工具将CSV转换为CHAR列,允许您按原样导入数据。它还允许您修改其配置,如更改列长度,以及不同的列类型。举一个简单的例子(摘自我写的用户手册):使用以下persons.csv:
CHAR
persons.csv
ID,Lastname,Firstname,Email 1,Doe,John,[email protected] 2,Doe,Jane,[email protected] 3,Deer,Jason,[email protected] 4,Deer,Jillian,[email protected]
字符串要转换文件,请使用命令行(注意:我使用Windows命令提示符行的延续,对于Linux,将\替换为^):
\
^
ext-table-gen --csv-file=C:\FirebirdData\csv\persons.csv ^ --table-file=C:\FirebirdData\exttables\persons.dat ^ --config-out=C:\FirebirdData\csv\persons.xml
型将C:\FirebirdData\替换为实际路径(或者使用相对路径,尽管我不推荐这样做,原因在用户手册中有解释)。文件persons.dat包含外部表数据。在这种形式下,它是一种固定宽度的文本格式,但如果您修改配置以使用其他数据类型,它实际上是一种固定宽度的二进制格式。persons.xml包含用于生成persons.dat的配置,以及生成外部表以实际读取它所需的配置:
C:\FirebirdData\
persons.dat
persons.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <extTableGenConfig xmlns="https://www.lawinegevaar.nl/xsd/ext-table-gen-1.0.xsd" schemaVersion="2.0"> <externalTable name="DEFAULT_EXTERNAL_TABLE_NAME" byteOrder="LITTLE_ENDIAN"> <columns> <column name="ID"> <char length="1" encoding="ISO8859_1"/> </column> <column name="Lastname"> <char length="4" encoding="ISO8859_1"/> </column> <column name="Firstname"> <char length="7" encoding="ISO8859_1"/> </column> <column name="Email"> <char length="19" encoding="ISO8859_1"/> </column> <endColumn type="LF"/> </columns> <tableFile path="C:\FirebirdData\exttables\persons.dat" overwrite="false"/> </externalTable> <tableDerivation columnEncoding="ISO8859_1" endColumnType="LF"/> <csvFile path="C:\FirebirdData\csv\persons.csv" charset="UTF-8" headerRow="true"> <rfc4180CsvParser/> </csvFile> <informational> <ddl>create table "DEFAULT_EXTERNAL_TABLE_NAME" external file 'C:\FirebirdData\exttables\persons.dat' ( "ID" char(1) character set ISO8859_1, "Lastname" char(4) character set ISO8859_1, "Firstname" char(7) character set ISO8859_1, "Email" char(19) character set ISO8859_1, "LF" char(1) character set ASCII default _ASCII x'0a' ); </ddl> </informational> </extTableGenConfig>
型您可以执行该命令在Firebird数据库中创建外部表,然后查询它(在读取文件之前,您需要修改ExternalFileAccess设置,有关详细信息,请参阅Firebird配置一节)。用户手册还介绍了如何通过更改列长度来提高配置文件的可重用性,以及如何使用不同的数据类型。修改配置文件后,您需要重新运行该工具,以新格式再次导出文件(并重新生成配置文件)。默认情况下,使用RFC 4180 CSV格式,但您可以更改配置以支持其他CSV文件格式。
ExternalFileAccess
8条答案
按热度按时间tp5buhyn1#
好吧,如果你能使用CSV,我想XMLWizard是适合你的工具。它可以加载CSV文件并与数据库数据进行比较。你可以选择你想对表进行的更改。
不要让它的名字欺骗了你,它确实可以处理XML,但是它也可以很好的处理CSV文件。它还可以估计列数据库,并为你的文件提供CREATE TABLE语句。
fkaflof62#
你试过FSQL吗?
它是一个免费软件,非常类似于Firebird的标准ISQL,但有一些额外的功能,如从CSV文件导入数据。
我用它与DBF文件和它的工作正常。
of1yzvn43#
还有用于Firebird和Interbase http://www.sqlmanager.net/en/products/ibfb/dataimport的EMS数据导入工具
虽然不是免费的,但它接受各种格式,包括CSV和Excel。
编辑
另一个类似的付费软件工具是Firebird Data Wizard http://www.sqlmaestro.com/products/firebird/datawizard/
hujrc8aj4#
有一些在线工具可以帮助您从CSV头文件/示例转储文件生成XML/DML脚本,请查看:http://www.convertcsv.com/csv-to-sql.htm然后您可以从命令行使用sql-workbench的Data Pumper或WbImport工具。Orbada具有GUI,支持导入CSV文件。DBeaver免费版也支持导入CSV。
nfs0ujit5#
我将excel文件加载到lazarus spreadsheet,然后导出到firebird db。一切都很好,唯一的问题是fpspreadsheet只会将带数字的字符串字段视为数字字段。我可以检查第一行的标题,看看excel文件是否有效。
roejwanj6#
据我所知,到目前为止,所有的回复都集中在基本上读取Excel(或CSV)文件并使用SQL插入将记录插入到Firebird数据库的工具上。
这就是为什么我创建了一个工具来读取Excel文件,并编写一个具有适合Firebird外部表(包括对UTF8字符列的支持)的(文本)格式的文件和一个用于在Firebird中创建外部表的文件。
然后,我使用常规SQL从外部表中进行选择,根据需要进行强制转换,并插入到我想要的任何普通Firebird表中。根据我的经验,这种方法的性能比从客户端应用程序插入SQL快几个数量级。
我愿意发布这个工具。它是用C#写的。如果有兴趣的话请告诉我。
smdnsysy7#
大容量插入
另一种方法是在Excel中,您可以在新单元格中构建公式,其中包含要导出的数据。该公式包括根据Firebird中字段的长度将字符串和长度格式化为字段。因此,您可以从Excel中复制所有这些单元格并粘贴到文本编辑器中,因此可以在Firebird中使用BULK重定向策略。
查看更多详情http://www.firebirdfaq.org/faq209/
问题是,如果你有blob或null数据导入,所以看看你是否有这种值,如果这种方式是给你。如果你有格式化的数据在一个文本文件中,BULK重定向将是快速的方法。
提示:您也可以禁用与表关联的触发器和索引来加速BULK重定向,并在启用它们之后。
hc8w905p8#
我写了一个工具,Firebird External Table Generator,它允许你将CSV文件转换成Firebird的外部表格文件格式。它是免费的,开源的。
在其基本用法中,该工具将CSV转换为
CHAR
列,允许您按原样导入数据。它还允许您修改其配置,如更改列长度,以及不同的列类型。举一个简单的例子(摘自我写的用户手册):
使用以下
persons.csv
:字符串
要转换文件,请使用命令行(注意:我使用Windows命令提示符行的延续,对于Linux,将
\
替换为^
):型
将
C:\FirebirdData\
替换为实际路径(或者使用相对路径,尽管我不推荐这样做,原因在用户手册中有解释)。文件
persons.dat
包含外部表数据。在这种形式下,它是一种固定宽度的文本格式,但如果您修改配置以使用其他数据类型,它实际上是一种固定宽度的二进制格式。persons.xml
包含用于生成persons.dat
的配置,以及生成外部表以实际读取它所需的配置:型
您可以执行该命令在Firebird数据库中创建外部表,然后查询它(在读取文件之前,您需要修改
ExternalFileAccess
设置,有关详细信息,请参阅Firebird配置一节)。用户手册还介绍了如何通过更改列长度来提高配置文件的可重用性,以及如何使用不同的数据类型。修改配置文件后,您需要重新运行该工具,以新格式再次导出文件(并重新生成配置文件)。
默认情况下,使用RFC 4180 CSV格式,但您可以更改配置以支持其他CSV文件格式。