标签: sql

Python:读取每个键多行的配置文件

我正在编写一个小型数据库测试套件,它使用查询和预期结果读取配置文件,例如:

query         = "SELECT * from cities WHERE name='Unknown';"
count         = 0
level         = 1
name          = "Check for cities whose name should be null"
suggested_fix = "UPDATE cities SET name=NULL WHERE name='Unknown';"
Run Code Online (Sandbox Code Playgroud)

这很好用; 我使用Python划分每一行string.partition('=').

我的问题是SQL查询很长.目前,我只是将这些查询粘贴为单行,这是丑陋且无法维护的.

我希望找到一种优雅的Pythonic方式来阅读表达的权利,即使跨越多行.

笔记:

  • 我的SQL查询可能包含 =
  • 我不喜欢在"右手边强迫s 的想法,因为有许多没有它的现有文件.

编辑:

ConfigParser很棒,但它强制我在多行条目的每一行的开头添加一个空格或制表符.这可能是一个巨大的痛苦.

提前致谢,

亚当

python sql configuration-files text-parsing

11
推荐指数
2
解决办法
1万
查看次数

在我的sql语句中,我为同一个参数调用了两次sum,是否重复了这些努力?

考虑下面我的SQL查询; 它为同一个参数调用两次.这是重复服务器完成的工作.有一个更好的方法吗?

SELECT      Status_Detail_Code, count(*) as 
   [Number of times assigned], round(sum(Duration)/60,2) as [total duration Hr]

 FROM         dbo.V_TIMELINE

 WHERE     (CADATE > N'20080101')  

group by Status_Detail_Code order by sum(Duration) desc
Run Code Online (Sandbox Code Playgroud)

sql sql-server

11
推荐指数
1
解决办法
680
查看次数

如何从SQL Server中的XML值获取元素名称列表

我在SQL Server 2k8中有一个带有XML列的表.以下SQL检索一些XML:

SELECT TOP 1 my_xml_column FROM my_table
Run Code Online (Sandbox Code Playgroud)

让我们说它返回以下XML

<a>
  <b />
  <c>
    <d />
    <d />
    <d />
  </c>
</a>
Run Code Online (Sandbox Code Playgroud)

我想得到的是

/a
/a/b
/a/c
/a/c/d
/a/e
Run Code Online (Sandbox Code Playgroud)

换句话说,我怎样才能让SQL Server告诉我XML的结构?

我可以执行以下操作来获取各个元素的所有名称:

SELECT  C1.query('fn:local-name(.)')
FROM    my_table
CROSS APPLY my_xml_column.nodes('//*') AS T ( C1 )
Run Code Online (Sandbox Code Playgroud)

也许如果有一个等效的"local-name()"返回了元素的整个路径就可以了?

xml sql sql-server sql-server-2008

11
推荐指数
2
解决办法
2万
查看次数

有人可以解释为什么这两个linq查询返回不同的结果?

我有两个linq(到EF4)查询,返回不同的结果.第一个查询包含正确的结果,但未正确格式化/投影.

第二个查询是我想要的,但它缺少一些数据.

架构

alt text http://img220.imageshack.us/img220/9678/schema.png

查询1

var xxxx = (from cp in _connectedClientRepository
            .GetConnectedClients(new[] { "LogEntry", "LogEntry.GameFile" })
            .AsExpandable()
            .Where(predicate)
            select cp)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

alt text http://img231.imageshack.us/img231/6541/image2ys.png

注意该财产GameFile.它不是空的.这很棒:)请注意linq查询?我渴望加载一个LogEntry然后急切加载GameFile(对于每个渴望加载的LogEntry).

这就是我所追求的 - >对于每一个LogEntry渴望加载的人,请急切加载GameFile.但这个预测结果是错误的......

好的......接下来......

查询2

var yyy = (from cp in _connectedClientRepository
            .GetConnectedClients(new[] { "LogEntry", "LogEntry.GameFile" })
            .AsExpandable()
            .Where(predicate)
        select cp.LogEntry)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

alt text http://img24.imageshack.us/img24/4417/image1tu.png

注意:上面的图片中有一个拼写错误...请注意包含关联类型代码是正确的(即.LogEntry.GameFile),而图像上的拼写错误.

现在正确投影 - >所有LogEntries结果.但请注意该GameFile属性现在如何为空?我不确定为什么:(我以为我正确地渴望加载正确的链.所以这是正确的投影,但结果不正确. …

.net c# sql linq linq-to-entities

11
推荐指数
1
解决办法
1669
查看次数

C#SMO备份远程数据库到本地机器

我有一个应用程序执行SQL数据库的备份和恢复,这在本地计算机上工作正常,但是如果我对另一台机器上托管的SQL服务器运行此操作,我会收到以下错误

Microsoft.SqlServer.Management.Smo.FailedOperationException:服务器'25 .98.30.79'的备份失败.---> Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常.---> System.Data.SqlClient.SqlException:无法打开备份设备'C:\ Program Files\State Manager\Archive\Capture\20100217152147*product*\databases*database**database*.bak'.操作系统错误3(系统找不到指定的路径.).

这似乎是由SQL服务器尝试将此文件写入其本地驱动器引起的.由于安全限制,我无法设置可以放置备份的共享区域.

有谁知道如何将这些数据移回到调用代码的机器上?

我的代码如下.

    private string Name;
    private string Server;
    private string dbName;
    private string user;
    private string password;

    public Boolean performCapture(String archiveDir)
    {
        String destination = archiveDir + "\\" + Name;
        if (!System.IO.Directory.Exists(destination))
        {
            System.IO.Directory.CreateDirectory(destination);
        }

        Server sqlServer = connect();
        if (sqlServer != null)
        {
            DatabaseCollection dbc = sqlServer.Databases;
            if (dbc.Contains(dbName))
            {
                Backup bkpDatabase = new Backup();
                bkpDatabase.Action = BackupActionType.Database;
                bkpDatabase.Database = dbName;
                BackupDeviceItem bkpDevice = new BackupDeviceItem(destination + "\\" + dbName …
Run Code Online (Sandbox Code Playgroud)

c# sql smo

11
推荐指数
1
解决办法
9816
查看次数

如何通过php中的mysql查询逐行迭代

好的,所以我试图查询我的数据库并选择具有特定值的所有行.之后我将查询转换为带有mysql_fetch_array()的数组,然后我尝试使用for循环遍历获取的数组中的行.

<?php
$query = mysql_query("SELECT * FROM users WHERE pointsAvailable > 0 ORDER BY pointsAvailable Desc");
$queryResultArray = mysql_fetch_array($query);
foreach($queryResultArray as $row)
{
    echo $row['pointsAvailable'];
}
?>
Run Code Online (Sandbox Code Playgroud)

虽然当我为pointsAvailable列之外的任何列执行此操作时,如果列出名为"name"的text类型,它只返回一个字母.

如何逐行遍历返回的查询,并允许从当前行获取特定的数据列?

php mysql sql iteration loops

11
推荐指数
1
解决办法
4万
查看次数

如何限制postgreSQL中特定列的结果数量?

我有一个包含用户项目的表.每个用户可以具有多种类型的项目,并且可以使每个项目不止一次.我想看看每个用户拥有的每种类型的项目数量.所以我使用以下查询:

select user_name, count(item_name) as "count_item", item_name 
from my_table 
group by user_name, item_name 
order by user_name, count_item desc;
Run Code Online (Sandbox Code Playgroud)

所以我得到这样的东西:

user_name | count_item  | item_name
----------+-------------+-----------
User 1    | 10          | item X
User 1    | 8           | item Y
User 2    | 15          | item A
User 2    | 13          | item B
User 2    | 7           | item C
User 2    | 2           | item X
Run Code Online (Sandbox Code Playgroud)

等等

现在,我想只看到每个用户的前3项.在上面的示例中,对于用户1,我想要查看项目X和Y,对于用户2,我想要查看项目A,B和C.

我怎么能这样呢?

谢谢!

sql postgresql

11
推荐指数
1
解决办法
216
查看次数

Oracle SQL:如何在IN子句中使用超过1000个项目

我有一个SQL语句,我希望ep_codes通过使用IN子句获得1200 的数据.当我ep_codes在IN子句中包含超过1000个内容时,Oracle说我不允许这样做.为了解决这个问题,我尝试更改SQL代码,如下所示:

SELECT period, ...
FROM   my_view
WHERE  period = '200912'
       ...
       AND ep_codes IN (...1000 ep_codes...)
       OR  ep_codes IN (...200 ep_codes...)
Run Code Online (Sandbox Code Playgroud)

代码已成功执行,但结果很奇怪(计算结果是针对所有期间提取的,而不仅仅是针对200912,这不是我想要的).是否适合使用ORbetween IN子句执行此操作,还是应该执行两个单独的代码,一个代码为1000,另一个代码代表200个ep_codes?


Pascal Martin的解决方案非常完美.感谢所有提出宝贵建议的人.

sql oracle

11
推荐指数
3
解决办法
3万
查看次数

AdventureWorks db有教程/练习吗?

我为sql server 2008下载并安装了AdventureWorks数据库.你知道是否有任何练习或教程吗?我想练习我的SQL select语句

sql sql-server adventureworks

11
推荐指数
1
解决办法
4万
查看次数

在SQL SELECT语句中重用别名字段

我想实现这样的目标:

SELECT 
  (CASE WHEN ...) AS FieldA,
  FieldA + 20 AS FieldB
FROM Tbl
Run Code Online (Sandbox Code Playgroud)

假设通过"..."我已经替换了一个冗长而复杂的CASE语句,我不想在选择FieldB和使用别名时重复FieldA.

注意,这将返回多行,因此在我的情况下,语句之外的DECLARE/ 不好.SETSELECT

sql sql-server alias sql-server-2008

11
推荐指数
1
解决办法
5189
查看次数