如何将列数可变的excel数据持久化到SQL Sserver数据库

如何将列数可变的excel数据持久化到SQL Sserver数据库,sql,sql-server,excel,xls,xlsx,Sql,Sql Server,Excel,Xls,Xlsx,我有一个应用程序,用户可以将.xls/.xlsx文件多次上传到服务器。但是电子表格中的列数没有限制。每个&Eachxls/xlsx可以有可变的列数。在某些情况下,这些xls/xlsx文件也可能没有列名。这些文件基本上是大量数据的转储,需要使用这些数据与某些主数据库进行匹配 我想将这些数据持久保存到SQL Server数据库中,但由于数据结构的限制,我无法找到可行的解决方案 下面我将总结这些限制: 电子表格可以有任意数量的列(不是固定数量的列) 列名可能存在,也可能不存在 非常感谢您的帮助。OPE

我有一个应用程序,用户可以将
.xls/.xlsx
文件多次上传到服务器。但是电子表格中的列数没有限制。每个&Each
xls/xlsx
可以有可变的列数。在某些情况下,这些xls/xlsx文件也可能没有列名。这些文件基本上是大量数据的转储,需要使用这些数据与某些主数据库进行匹配

我想将这些数据持久保存到SQL Server数据库中,但由于数据结构的限制,我无法找到可行的解决方案

下面我将总结这些限制:

  • 电子表格可以有任意数量的列(不是固定数量的列)
  • 列名可能存在,也可能不存在

  • 非常感谢您的帮助。

    OPENROWSET将是您的第一个呼叫端口。这将以表格的形式打开excel文件,然后可以对其进行操作

    完整语法

    该页中的示例:

    SELECT * 
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                    'Excel 8.0;Database=C:\Source\Addresses.xls',
                    'SELECT * FROM [Sheet1$]')
    

    并不是说这是不可能的,但你对这个问题的限制使它非常非常困难。SQL中的“S”代表“结构化”——因此,您的问题描述基本上是说您试图在圆孔中插入一个方形的销钉。你至少可以指定列名吗?此外,我们需要更多地了解您的数据。它是半结构化的还是完全非结构化的?是否可以按内容确定列?请详细说明。面向列的数据库将更方便…@rmayer06是的,同意您在圆孔情况下使用方形销钉。客户端正在获取从第三方应用程序生成的数据。通常,客户机能够根据内容确定列,这就是为什么他们通常不关心列名的原因,并且他们想要一个能够提供如此多灵活性的应用程序。而且数据是结构化的,这就是为什么他们习惯了它。@Fractaliste,客户是一家投资银行,他们的大部分数据都存储在sql server中。因此,强迫他们使用其他类型的数据存储几乎是不可能的。这个OLEDB东西是否可以与java生态系统一起工作。我的目的是将xls数据永久存储在dbms中,以便我们可以随意使用它们。根据您的示例,似乎每次我需要引用xls中的一些数据时,我都需要将其一次又一次地加载到内存中。这不是一个昂贵的操作吗?我不知道它在Java中是如何工作的,但这段代码只是获取了数据——这取决于您如何处理检索到的数据