小编lla*_*oo7的帖子

我应该如何将数据从"糟糕"的数据库设计迁移到可用的设计?

我继承的当前项目主要围绕一个非标准化表.有一些尝试正常化,但没有实施必要的限制.

示例:在Project表中,有一个客户端名称(以及其他值),还有一个客户端表,它只包含客户端名称[无任何键在任何地方].clients表仅用作值池,以便在添加新项目时为用户提供.客户端表或外键上没有主键.

诸如此类的"设计模式"在数据库的当前状态和使用它的应用程序中很常见.我可以使用的工具是SQL Server 2005,SQL Server Management Studio和Visual Studio 2008.我最初的方法是手动确定哪些信息需要规范化并运行Select INTO查询.有没有比个案更好的方法,或者无论如何这可以自动化?

编辑: 此外,我发现"工单号"不是IDENTITY(自动编号,唯一)字段,它们是按顺序生成的,对每个工单都是唯一的.现有编号也存在一些差距,但都是独一无二的.这是编写存储过程以在迁移之前生成虚拟行的最佳方法吗?

sql sql-server refactoring rdbms normalization

8
推荐指数
1
解决办法
1133
查看次数

解析具有许多(数百万)行的大(> 4GB)文本文件的最佳(速度)方法是什么?

我正在尝试确定什么是读取包含许多行的大型文本文件的最快方法,进行一些处理,并将它们写入新文件.在C#/ .net中,看起来StreamReader是一种看似快速的方法,但是当我尝试使用这个文件(逐行阅读)时,它大约是python I/O速度的1/3(这让我很担心)因为我一直听说Python 2.6的IO相对较慢.

如果没有更快的.Net解决方案,是否可以比StreamReader更快地编写解决方案,或者它是否已经使用了我绝不会希望击败的复杂缓冲区/算法/优化?

.net c# parsing buffer text

6
推荐指数
1
解决办法
1980
查看次数

如何在Windows中使用路径太深的问题自动复制文件?

我希望能够有选择地复制文件列表并保留其目录结构.问题是,有很多文件的路径超过256个字符.这个问题通常是如何处理的?

编辑:我应该说清楚我只想有选择地复制文件,而不是文件夹.我不认为robocopy可以有效地用于复制单个文件及其文件夹结构.

windows copy

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

在C#中使用自定义分隔符和一些非常非常大的字段值解析文本的最快方法是什么?

我一直在尝试处理一些带有非标准分隔符(不是逗号/引号或制表符分隔符)的分隔文本文件.分隔符是随机ASCII字符,在分隔符之间不会显示.在搜索之后,我似乎只发现.NET中的解决方案不适合我的需求,人们为此编写的自定义库似乎在巨大的输入(4GB文件,其中包含一些字段值)时存在一些缺陷非常容易几百万字符).

虽然这看起来有点极端,但它实际上是电子文档发现(EDD)行业的标准,某些评论软件的字段值包含文档的全部内容.作为参考,我以前在使用csv模块的python中完成了这个,没有任何问题.

这是一个示例输入:

Field delimiter = 
quote character = þ

þFieldName1þþFieldName2þþFieldName3þþFieldName4þ
þValue1þþValue2þþValue3þþSomeVery,Very,Very,Large value(5MB or so)þ
...etc...
Run Code Online (Sandbox Code Playgroud)

编辑:所以我继续从头开始创建一个分隔文件解析器.我有点厌倦使用这个解决方案,因为它可能容易出错.为这样的任务编写我自己的解析器也不会感觉"优雅"或正确.我也有一种感觉,无论如何我可能不必从头开始编写解析器.

c# parsing bulk delimited-text

3
推荐指数
1
解决办法
3338
查看次数

如何复制具有深层路径的只读文件并保留文件时间元数据?

我正在尝试处理的任务是在WINAPI周围创建一组包装器,以处理Windows中具有深层路径的文件的各种文件修改.

目前,我使用WINAPI调用复制文件,前缀为"\\?\",如此处所示.复制文件后,我正在使用原始文件中的文件时间元数据(创建,访问,修改)并在目标文件上设置时间.当我尝试将此逻辑应用于只读文件时,我遇到了问题.

这是我到目前为止所尝试的:

  1. 复制文件.
  2. 在调用GetFileAttributes后,使用SetFileAttributes从目标中删除ReadOnly标志.
  3. GetFileTime(原创)
  4. SetFileTime(目的地)(原始文件时间)
  5. 再次应用readonly标志.

这样做的问题是重新应用readonly标志后文件修改时间会更新.有没有办法坚持所有的元数据?

c# windows winapi

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

这个SeBackupPrivilege(备份模式)实现有什么问题?

(背景资料:随意跳到最后一段)

目前,我有一个硬盘驱动器,它是来自另一台计算机的O/S驱动器的完整映像.它是一个外部USB驱动器,连接到写入阻止器,然后连接到我的计算机.我正在使用它来测试我用于复制文件的代码(以及其他内容),并且我遇到了一个无法仅使用管理员权限复制的文件.

在阅读了Windows中的权限后,我确定需要备份权限才能访问本地驱动器上的所有文件.我已经通过使用带有"/ b"标志的robocopy验证了这是我需要的,它为副本启用了备份模式.一切都复制得很好没有问题.我只需要能够让我自己的代码能够在备份权限下运行.

在我的代码(C#)中,我尝试实现必要的winapi调用(AdjustTokenPrivileges),以便为当前的进程备份特权提供未验证的结果.我使用了本文中的一些代码(http://www.codeproject.com/Articles/21202/Reparse-Points-in-Vista)来使用已知的"工作"实现.在代码项目中,我尝试添加一个带有"拒绝访问"错误的File.Copy().我也尝试使用winapi调用CopyFileW()同样的错误.在这一点上,我没有想法:(.

作为参考(来自文章),这是我用于特权升级的代码:

bool success;
IntPtr token;
TOKEN_PRIVILEGES tokenPrivileges = new TOKEN_PRIVILEGES();
tokenPrivileges.Privileges = new LUID_AND_ATTRIBUTES[1];
success = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, 
                           out token);
if (success)
{
    // null for local system

    success = LookupPrivilegeValue(null, SE_BACKUP_NAME, 
                                   out tokenPrivileges.Privileges[0].Luid);
    if (success)
    {
        tokenPrivileges.PrivilegeCount = 1;
        tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        success = AdjustTokenPrivileges(
            token,
            false,
            ref tokenPrivileges,
            Marshal.SizeOf(tokenPrivileges),
            IntPtr.Zero,
            IntPtr.Zero);
    }
    CloseHandle(token);
}
Run Code Online (Sandbox Code Playgroud)

编辑:要添加更多信息,如果我按原样运行项目,链接的ReparsePoint代码就可以正常工作.当我删除调用AdjustTokenPrivilege时,它会抛出"拒绝访问"错误.

c# winapi elevated-privileges

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