Tag: odbc

从SQL数据库到使用Python的Excel

我是Python的新手。 我已经通过odbc连接成功地连接到我的SQL数据库,并从表中提取数据。 然后,我如何将这些数据导入到Excel工作簿中。 最好使用xlsxwriter模块。 import pyodbc cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSERVER;PORT=XX;DATABASE=dbname;UID=sa;PWD=##') cursor = cnxn.cursor() cursor.execute("select * from T1 where C2 not like '%text%'") for row in cursor: print row.1, row.2, row3 cursor.close() cnxn.close()

如何在Access或Excel中最好地使用VBA来testingODBC连接?

给定一个预先configuration的ODBC系统DSN,我想写一个函数,优雅地testing使用VBA的连接。 Private Function TestConnection(ByVal dsnName As String) As Boolean ' What goes here?? ' End Function 编辑:为了澄清,系统DSN指向外部SQL Server 2005数据库,与Windows NT身份validation。 我尝试过的一种方法是发送一些随机查询到目标数据库并捕获错误。 如果查询起作用,则返回true。 如果有错误,则返回false。 这工作得很好,但感觉… kludgy。 有没有更优雅的方式,特别是不依赖On Error Goto ? 注意:这是我正在使用的传统Access 2000数据库,所以任何解决scheme都不能有任何Access 2007或2003依赖项。 我想使它对VBA是通用的,但是如果在Access中有一个简单的方法,那也可以。 非常感谢任何build议。

ODBC连接与propritary驱动程序/ Excel信任设置

我在Excel中有一个电子表格,使用软件的odbc驱动程序(Action Request System)连接到内部数据库。 这工作正常。 现在,我正在尝试将Excel文件移动到SharePoint网站,以便我们的团队可以查看数据并在同一电子表格中做笔记。 所以,我首先尝试将Excel文件移动到服务器,但是意识到保存在文件中的连接指向了我的计算机上的连接文件。 所以我把它移到SharePoint网站,这似乎是工作…除了: 1)在一些电脑上,它打开很好。 但是我更喜欢它,如果要求login和pw的对话框是定制的。 2)在其他计算机上,软件和驱动程序已安装,但未显示在用户源列表中,因此会引发错误。 当用户去创build一个新的连接,驱动程序在那里,(所以它不在第一个列表中,但它在更大的列表中)。 3)Mac可以打开文件,但Excel 2008不能执行macros和连接。 4)从同一站点打开相同的文件,每次都会引发信任中心警告,即使在同一台计算机/同一用户中也是如此。 有没有办法做到以下任何一个? 有一个非macros,保持用户保存(从而覆盖)表,直到确认用户不会更改连接/macros? 允许用户从本地configuration连接(如果它们可以设置一个在主要configuration失败时工作的configuration),以便它们可以使用该configuration进行连接,但不能将其用于其他人。 设置信任设置(本地或在服务器上,我想),以便任何文件从一个特定的SharePoint总是信任? 最后,这是最大的一个… 你能使用不在本地机器上的驱动程序创build连接吗? 如果驱动程序安装在远程服务器上,Excel可以使用那个? 如果是这样,这将解决几乎所有其他问题(除非你在Mac上)。 我觉得我这样做有点不对,但是因为团队都需要看别人的笔记,所以我们唯一的解决方法就是把数据(从数据库)上传到MySQL数据库中,这样他们就可以从他们的笔记中做笔记浏览器。 这使得它更普遍可用,但迫使我们编写许多Excel中标准的函数,并创build冗余的数据库。

Excel中的64位ODBC – 再次

我担心这已经被打死了,但我仍然努力解决最近移植到Server 2008和64位的ASP.NET应用程序中读取Excel文件的问题。 我发现很多post都指向了64位微软驱动程序的存在: 在这里和这里 。 我关心的是我也正在阅读有关这些警告的信息,可能是为了线程安全的原因,而不是“在服务器端应用程序中替代Jet OLEDB Provider”? 这是一个服务器端的应用程序,虽然Excel上传并不是每天数百次,但它们将由客户完成。 我知道也有商业图书馆可供使用,当我开始考虑他们的时候,我担心“修改追逐”,而不是被他们烧死(这在我们以前发生过)。 那么,是否有一个线程安全的,服务器安全的方式来读取64位的Excel文件? 而在你提出.CSV之前,我有足够的时间让客户给我发送格式合理的Excel文件,更别提要求他们导出到.csv。 哦,并添加另一个要求,我真的不想运行整个应用程序的32位。

SQLite以前在where子句中select的值

序言(你可以跳过这个,这只是我的理由) 我已经创build了一个使用sqlite作为其数据库后端的应用程序,并且该模式在一般的应用程序使用过程中工作(和执行)非常好。 现在我正在尝试为它build立一个报告系统,并且我build立了一个excel xll,它可以从一个未命名的DSN创build查询表。 正因为如此,我只能在sql中完成所有的报告(即,我无法编程)。 除了一个查询之外,这一切都很好 ///跳过这里…. 我的数据库包含一个特征列表,它具有一个ID,距离和一个指标,以确定这个特征是不是一个标记。 id不一定与距离相同(id为10的特征可能具有距离100,id为11的特征可能具有距离90)。 所以这个项目基本上是这样的: Feature { int id, int distance, bool is_marker } 我想要做的是find下一个和以前的function,也是标记。 ///编辑 我第一次尝试使用: select * /* I want all the data from this feature */ (select MAX(f2.distance) – f1.distance from feature as f2 where f2.is_marker && f2.distance < f1.distance) /* and the distance to the previous […]

在Excel 2010中closures在MySQL查询参数中的转义

我正在使用Excel 2010和一个ODBC连接器从MySQL数据库中提取数据。 我只想根据用户名列表来拉某些logging。 我已经将login列表放入正确格式化的单元格中 SELECT * FROM table WHERE login IN (?) 参数指向包含表单列表的单元格(使用自定义连接函数从列构造而成): 'login1', 'Login2身份' …… '隆吉' 但是,当我运行查询时,返回0行; 玩弄它似乎Excel是逃避单引号,所以发送到MySQL服务器的查询是: SELECT * FROM table WHERE login IN (\'login1\',\'login2\',…\'loginN\') …什么都不匹配 有什么办法来防止转义,或另一种方法来“SELECT … WHERE IN”查询将工作?

共享查询数据库的Excel文件

我有一个只读的文件,用于查询SQL Server数据库,并将为特定用户提供个性化的信息。 (Excel标识用户,然后根据用户标识运行查询)。 我想知道的是,如果有一种方法来共享文件,而不必为每个用户build立一个ODBC连接? 现在我有四个用户的工作,但要达到这一点,我必须在每台机器上设置ODBC。 由于该文件最终将有大约60个用户,我希望有一种方法来查询SQL Server,而不必设置多个ODBC连接?

在Unity中从excel中检索元数据

我正在使用ac#Unity脚本中的ODBC访问.xsl文件中的数据。 连接起作用,我可以从文件中检索数据,但是我的元数据有问题。 当我调用GetSchema(string)函数时,它会陷入无限的recursion调用,直到它导致堆栈溢出。 不pipe我试图得到什么特定的模式,这个问题都会发生。 这是我正在使用的代码: string connectionString = "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; Dbq=" + file + ";UNICODESQL=1;Unicode=yes;"; OdbcConnection dbCon = null; OdbcDataReader dbData = null; try { dbCon = new OdbcConnection(connectionString); Debug.Log(connectionString); dbCon.Open(); DataTable sheets = dbCon.GetSchema(OdbcMetaDataCollectionNames.Tables); foreach(DataRow sheet in sheets.Rows) { string sheetName = sheet["TABLE_NAME"].ToString().Trim('\'').TrimEnd('$'); OdbcCommand dbCommand = new OdbcCommand("SELECT * FROM [" […]

Oracle根据当前loggingselect另一条logging中的字段

我需要执行一个单一的oracle SQL查询,如果logging与当前logging中的特定条件匹配,将返回不同logging中某个字段的值。 通过ODBC连接将这些数据从Oracle SQL DB中提取到excel中以生成报告。 目前我从表格中提取所有的数据并在excel中进行处理,但是logging的数量已经增加到不再是可行的选项。 (约一千四百万) SOURCE TABLE ——————————————————————————————- |major |minor |step |currentUser |NextUser |comment |stage |action |timestamp | ——————————————————————————————- |475 |13 |1 |jim |bob |request created |QA |submit |12-19-2005| |475 |13 |2 |bob |james |request approved |RA |accept |12-20-2005| |475 |13 |3 |james |bob |data submitted |QA |submit |12-21-2005| |475 |13 |4 | […]

如何解决在SQL中导出巨大的Excel数据时“外部数据库驱动程序出现意外错误”(后面跟着中文字符)

当我尝试将数据从Excel文件导入到SQL数据库时,出现如下错误: 来自外部数据库驱动程序的意外错误(霰呫潈ూŐీL)。 我的代码: private void Import(string fileFullPath, string fileName, StreamWriter writer) { string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=YES;" + (char)34; using (OleDbConnection cn = new OleDbConnection(ConnectionString)) { cn.Open(); DataTable dbSchema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dbSchema == null || dbSchema.Rows.Count < 1) { writer.WriteLine("Error: Could not determine […]