首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析PostgreSQL CSV日志

解析PostgreSQL CSV日志
EN

Stack Overflow用户
提问于 2012-03-22 06:47:20
回答 1查看 1.4K关注 0票数 0

我正在处理一段应用程序,需要分析由PostgreSql服务器生成的CSV日志。

  • 日志存储在C:\ Files\PostgreSQL\9.0\data\pg_log程序中
  • 9.0.4中的服务器版本
  • 应用程序是用C Sharp开发的。
代码语言:javascript
复制
- The basic utility after Parse the Log is to show contents in a DataGridView. 
- There are other filter options like to view log contents for a particular range of Time for a Day.

然而,的主要问题是日志格式不可读

它首先用一个快速的CSV阅读器测试

然后,我们使用String.Split方法制作了一个自定义实用程序,通常使用Foreach循环遍历数组

一个样本日志数据线

2012-03-21 11:59:20.640 IST,"postgres"," stock_apals ",3276,"localhost:1639",4f697540.ccc,10,“空闲”,2012-03-21 11:59:20 IST,2/163,0,LOG,00000,语句:选择id,pdate,itemname,qty (按日期分列),id,,,"exec_simple_query,.\src\backend\tcop\postgres.c:900“

如您所见,日志中的列是逗号分隔的,但是单个值不包含在Quote中。

例如,第一,第四,第六。列

是否有一个实用程序或Regex可以查找格式错误的列并放置引号

尤其是在性能方面,因为这些日志很长,而且几乎每小时都会生成新的日志。

我只想更新列并使用FastCSVReader来解析它。

谢谢你的建议和帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-23 07:33:24

我已经更新了我的csv解析器,所以它现在能够解析数据(至少在示例中提供了)。下面是示例控制台应用程序,它解析保存在multiline_quotes.txt文件中的数据。项目源代码可以找到这里 (您可以下载ZIP)。您需要Gorgon.ParsingGorgon.Parsing.Net35 (以防无法使用.NET 4.0)。

实际上,我能够使用快速CSV阅读器获得相同的结果。你一开始就用错了。

代码语言:javascript
复制
namespace So9817628
{
    using System.Data;
    using System.Text;
    using Gorgon.Parsing.Csv;

    class Program
    {
        static void Main(string[] args)
        {
            // prepare
            CsvParserSettings s = new CsvParserSettings();
            s.CodePage = Encoding.Default;
            s.ContainsHeader = false;
            s.SplitString = ",";
            s.EscapeString = "\"\"";
            s.ContainsQuotes = true;
            s.ContainsMultilineValues = true;
            // uncomment below if you don't want escape quotes ("") to be replaced with single quote
            //s.ReplaceEscapeString = false;

            CsvParser parser = new CsvParser(s);

            DataTable dt = parser.ParseToDataTableSequential("multiline_quotes.txt");

            dt.WriteXml("parsed.xml");
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9817628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档