C# 从.rpt文件提取数据以在PostgreSQL 9.0中复制到数据库中

C# 从.rpt文件提取数据以在PostgreSQL 9.0中复制到数据库中,c#,sql,postgresql,pgadmin,C#,Sql,Postgresql,Pgadmin,我有一个报告文件.rpt,其文本如下所示,并且这个.rpt文件每天都会更新 Datum/Uhrzeit,Sta.,Bez.,Unit,TBId,Batch,OrderNr,Mat1,Total1,Mat2,Total2,Mat3,Total3,Mat4,Total4,Mat5,Total5,Mat6,Total6,Summe 41521.755934(04.09.13 18:08:32),TB01,TB01,005,300,9663, ,2,27313.63,0,0.00,0,0.

我有一个报告文件.rpt,其文本如下所示,并且这个.rpt文件每天都会更新

Datum/Uhrzeit,Sta.,Bez.,Unit,TBId,Batch,OrderNr,Mat1,Total1,Mat2,Total2,Mat3,Total3,Mat4,Total4,Mat5,Total5,Mat6,Total6,Summe
41521.755934(04.09.13 18:08:32),TB01,TB01,005,300,9663,        ,2,27313.63,0,0.00,0,0.00,3,1776.19,0,0.00,0,0.00,29089.82
41521.797601(04.09.13 19:08:32),TB01,TB01,005,300,9682,        ,2,27365.98,0,0.00,0,0.00,3,1780.86,0,0.00,0,0.00,29146.85
41521.839269(04.09.13 20:08:32),TB01,TB01,005,300,9701,        ,2,27418.34,0,0.00,0,0.00,3,1785.53,0,0.00,0,0.00,29203.88
41521.880937(04.09.13 21:08:33),TB01,TB01,005,300,9721,        ,2,27473.31,0,0.00,0,0.00,3,1790.40,0,0.00,0,0.00,29263.71
41521.922606(04.09.13 22:08:33),TB01,TB01,005,300,9741,        ,2,27528.53,0,0.00,0,0.00,3,1795.30,0,0.00,0,0.00,29323.83
41521.964274(04.09.13 23:08:33),TB01,TB01,005,300,9760,        ,2,27580.88,0,0.00,0,0.00,3,1799.97,0,0.00,0,0.00,29380.84
41522.005942(05.09.13 00:08:33),TB01,TB01,005,300,9780,        ,2,27636.00,0,0.00,0,0.00,3,1804.86,0,0.00,0,0.00,29440.86
需要提取每行的第一个和最后一个读取值,并需要将该读取放入数据库表中

第一次读数-基准面/超高分辨率

最后一读-总结

我也使用了COPY命令,但它不接受第一个值。我想知道使用哪种数据类型来提取这个值,它不是正常的日期格式

也不可能只从这个文件中读取这两个读数,而不是整个20个读数??有这样的方法吗

我正在使用PostgreSQL 9.0


任何帮助都会很好。

假设reading=column:

您需要复制到临时表,其中第一列的类型为text,而不是date,因为这是无效的日期格式

然后你可以在teal_表col1,col2。。。选择一些函数日期,col2,col3。。。可以使用适当的SQL将临时表内容转换为正确的日期数据,并将其插入到实际的目标表中

虽然不是针对特定的日期格式,但已有很多关于堆栈溢出的示例。我猜在巴黎的约会。。。是您想要的日期,前面的数字表示该日期,表示为自历元起的天数+自一天开始的时间。只解析日期部分会更容易,您可以使用:

SELECT to_timestamp(substring('41521.880937(04.09.13 21:08:33)' from '\(.*\)' ), '(DD.MM.YY HH24.MI.SS)');
这就是你对上述问题的一些看法


至于只取两个想要的列,所以我不打算重复我自己。简短版本:使用ETL工具,仅使用这些列重新导出CSV,或使用筛选程序限制输入。

非常感谢您的回答解决了我的问题。只是一件小事,函数给它的时间戳以时间戳和时区的形式给出输出。语句-->在文件的日期中选择“timestampsubstrDatum/Uhrzeit,14,30,'dd.mm.yy hh24:mi:ss”;输出是->2013-09-04 12:17:48+05:30如果我必须删除此+5:30,那么我该怎么办?我尝试了一些其他与此相关的函数,但它们在输出中也没有给出正确的形式