在这篇文章中,八斗大数据,最初由格伦·保利撰写并发布到sybase.com网站2009年11月,大数据的发展前景,大数据时代是什么意思,Glenn谈到将数据从Microsoft Excel导入SQL Anywhere数据库。
将数据从Microsoft Excel电子表格导入SQL Anywhere数据库的一种方法是通过DBISQL INPUT语句。下面是一个示例:
请注意,这是一个DBISQL语句,而不是可以由服务器执行的SQL语句。这个声明的组成部分如下:
等等!您已经将所选的行和列导入到名为"T"的SQLAnywhere表中。
上述步骤确实有效。真正地。它与SQL Anywhere 11.0.1文档的不同之处在于,我包含了用于命名行和列矩阵的Excel 2007步骤;11.0.1文档指定了使用Office 2003版本Excel时的步骤。
旁白:SQL Anywhere 11.0.1文档中缺少的一部分是,Microsoft ODBC驱动程序假定命名的行和列集合的第一行包含数据的"列名",ODBC驱动程序将返回这些单元格值以响应对该结果集的元数据调用。因此,如果命名一组要加载的行和列,淘客软件,请确保第一行包含表"T"所需的列的名称-使用DBISQL INPUT语句,DBISQL将使用元数据调用返回给底层ODBC驱动程序的列的名称。
但是,有两个重要的(和相关的)问题使用此方法导入Excel数据时,它们都是由于microsoftexcelodbc驱动程序的行为造成的(我在上面记录的两个驱动程序都表现出相同的行为)。这两个问题是:
Excel驱动程序在为每列单元格选择数据类型时的行为在2003年的Microsoft知识库文章中有部分解释。当电子表格中的数据不干净时,似乎很少有人能强迫驱动程序选择更通用的类型(比如字符串)。正是这些数据类型的选择导致了第二个问题。
DBISQL INPUT语句导致DBISQL使用宽回迁在Excel数据源上打开一个光标–在出现第一个数据异常时,Microsoft驱动程序返回文件结尾,结果集被有效地截断而没有错误。我用另外两个JDBC-ODBC桥进行了实验——免费提供的Sun Microsystems桥和商用的Easysoft JDBC-ODBC桥(可免费试用)——两个驱动程序表现出稍有不同的行为,返回完整的结果集,但用空值替换无效的数据值,物联网平台,同样没有显示错误错误。我的同事Karim Khamis非常友好地提供了一个Java应用程序示例来演示这种行为:
不幸的是,这里的安全策略是将数据从Excel导出到更易于加载的文件中,例如CSV文件。然后可以使用各种loadtable选项来加载数据,显式地控制用于T的每一列的数据类型。