我是一个相对较新的开发人员,并被分配了记录由高级C#开发人员编写的代码的任务.我的老板告诉我要仔细查看,并记录下来,以便根据需要更容易修改和更新.
我的问题是:我应该遵循标准类型的文档/评论结构吗?我的老板听起来好像每个人都知道如何将代码记录到某个标准,以便任何人都能理解它.
我也很好奇是否有人有一个很好的方法来找出不熟悉的代码或功能不确定性.任何帮助将不胜感激.
我正在开发一个C#程序,以确定在使用SSIS包导入之前,具有100,000多行的多个大文本文件中每行的行长度.我还将检查每一行上的其他值,以验证它们是否正确,以便使用SSIS将它们导入我的数据库.
例如,我期望行长度为3000个字符,然后CR为3001,LF为3002,总共3002个字符.
当使用ReadLine()时,它读取CR或LF作为行尾,这样我就无法检查CR或LF字符.我只是在3000处检查线的长度以确定长度是否正确.我刚刚遇到一个问题,即文件在位置3001处有一个LF但是缺少CR.所以ReadLine()说它是3000 char的女巫是正确的但它会在我的SSIS包中失败,因为它缺少一个CR.
我已经验证Read()将一次到达每个char 1,我可以确定每行是否有CR和LF,但这似乎相当无效,当我遇到的某些文件有超过5,000,000+行时,这似乎非常效率低下.我还需要将每个char添加到字符串中或使用ReadBlock()并将char数组转换为字符串,以便我可以检查该行中的其他值.
有没有人有一个有效的方法来检查给定线路上CR和LF以及其他值的线路,而不浪费不必要的资源并以相对及时的方式完成.
我正在使用 SSIS 将多个打包字段(十六进制值)写入大型机系统的平面文件。我发现写入 0x00 或 NULL 不会写入 NULL,而是写入 0x20 或空格。有没有办法用 SSIS 将 NULL 字符写入平面文件?谢谢!
这是我在 OLE DB 源中用于将 NULL 写入文件的 SQL
SELECT CONVERT(VARCHAR, (0x00)) AS NullValue
Run Code Online (Sandbox Code Playgroud) 我在C#程序中使用7zip http://www.7-zip.org/download.html使用下面的代码解压缩文件.
Process t = new Process();
t.StartInfo.FileName = "7za.exe";
t.StartInfo.Arguments = "e " + filePath[i] + " -y -o" + directory[3];
t.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
t.EnableRaisingEvents = true;
t.StartInfo.UseShellExecute = false;
l.StartInfo.RedirectStandardOutput = true;
t.Start();
Console.WriteLine(l.StandardOutput.ReadToEnd());
t.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
我发现在7zip帮助中搜索可以使用l而不是e(第3行)来列出存档的内容,但我无法弄清楚如何获取存档中包含的文件的文件名.有任何想法吗?谢谢!
我在数据库中有一个表,行如下:
Milk
Eggs
Butter
Cheese
Bread
Run Code Online (Sandbox Code Playgroud)
我想将整行旋转到一列,如下所示:
Milk Eggs Butter Cheese Bread
Run Code Online (Sandbox Code Playgroud)
我找到了很多使用多列和行或基于选择条件的例子.我还没有找到任何如何做一行的例子,我无法弄明白.谢谢您的帮助!
编辑:下面的方法工作得很好,但有没有办法做到这一点并将行值转换为列值?
我对C#比较新,我遇到了一些麻烦.
我正在创建一个程序,我想从命令行加载文件.例如:
MyProgram.exe C:\ExcelDocument.xls
Run Code Online (Sandbox Code Playgroud) 我正在开发一个C#程序,它读取非常大的文件并检查它们是否有不同的属性和字段.我一直在测试不到100万行的文件,并按预期进行预编译.我最近在一个包含250万行的文件上进行了测试,花了4个小时才完成.
我正在使用自定义阅读功能读取每个字符,以便我可以找到所有CR和LF,因为每行包含它们非常重要.我已经单独测试了阅读功能,它看起来大约需要14分钟来读取文件,我觉得这个文件足够合理,可以读取250个行中1500个字符的每个字符.我将包括我阅读功能,但这似乎并没有导致问题.
我的阅读功能将每个字符添加到一个字符串,然后我检查字符串中的不同值.例如,行长度是否正确,文件是否包含标题,标题是否包含正确的值.以及特定值如char位置403-404一个数字,是字段1250-1300不为空等.
我的问题是我能做些什么来弄清楚导致速度减慢的原因并提高我的程序效率?我已经尝试检查每个循环开始和结束时的时间,但似乎没有改变.但是,每100,000人需要的时间比以前长得多.例如,处理线10,000到20,000花费不到3秒,830,000到840,000花费约35秒.我曾考虑尝试多个线程,但不认为在我从文件中读取行的情况下它会有所帮助.思考?谢谢您的帮助!
static void ReadMyLine(ref string currentLine, string filePath, ref int asciiValue, ref Boolean isMissingCR, ref Boolean isMissingLF, ref Boolean isReversed, ref StreamReader file)
{
Boolean endOfRow = false;
isMissingCR = false;
isMissingLF = false;
isReversed = false;
currentLine = "";
while (endOfRow == false)
{
asciiValue = file.Read();
if (asciiValue == 10 || asciiValue == 13)
{
int asciiValueTemp = file.Peek();
if (asciiValue == 13 && asciiValueTemp == 10)
{
endOfRow = true;
asciiValue = file.Read();
} …Run Code Online (Sandbox Code Playgroud) 我在 BIDS 2008 中使用 SSIS,并且试图获取包含文件列表的对象变量的计数。关于如何做到这一点有什么想法吗?
谢谢!
我试图在C#中动态创建一个StringBuilder数组,我没有太多运气.
我想根据给定的客户端数字向StringBuilder(sb)添加信息,该数字将根据我可能拥有的客户端数量动态变化.我可能有2个或者我可能有20个.sb将用于在我的程序中稍后为每个客户端构建一个报告.
例如,我有以下3个客户:
Client A = 0
Client B = 1
Client C = 2
Run Code Online (Sandbox Code Playgroud)
如果客户A报告他有8个苹果,我想将字符串"8 apples"添加到sb [0].
如果客户B报告他有3个橙子我想将字符串"3 oranges"添加到sb [1].
以上只是我想要实现的想法的一个简单例子.实际上,我将向某人添加大量信息.
我已经尝试过以下运动,但没有太多运气让他们以我期望或想要的方式工作.
StringBuilder[] sbFileError = new StringBuilder[clientCount];
List<StringBuilder> sbFileError = new List<StringBuilder>();
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?是否可以创建StringBuilder数组?
谢谢!
我正在创建一个ASCII输出文件包含一些信息,我的两个字段要求日期和时间在压缩十进制字段(COMP-3).我正在使用SQL和SSIS生成我的文件.
Field Name Format Length Picture
Date YYYYMMDD 5 S9(8) C-3
Time HHMMSS 4 S9(6) C-3
Run Code Online (Sandbox Code Playgroud)
我搜索了多个站点,但仍然无法弄清楚如何将日期/时间转换为压缩十进制字段.任何帮助将不胜感激.
提供了以下站点http://www.simotime.com/datapk01.htm#TablePackedDecimal以获取有关打包字段的信息.我理解如何使用压缩字段,但不太了解如何打包字段.谢谢!