[英]Importing CSV file into Access using C# but data is out of order
今天有点老派,试图修复制造工厂中运行的一些软件,该软件将 CSV 文件中的数据导入用于生成 Crystal 报告的访问数据库!
原始 CSV 文件按 RANK(1、2、3 等)顺序排列,但当使用以下代码导入时,它通常无序到达 Access 数据库。
using (OleDbCommand accComm2 = new OleDbCommand(String.Format("SELECT TOP 100 PERCENT vCSV.* INTO {0} FROM [Text;FMT=Delimited;HDR=YES;IMEX=1;DATABASE={1}].[{2}] as vCSV ORDER BY vCSV.RANK", dbtable, Path.GetDirectoryName(fname), Path.GetFileName(fname)), accConn, accTran))
{
accComm2.ExecuteNonQuery();
}
这会导致进一步的问题,因为创建的古怪水晶报告制造摘要要求数据按等级排列。
因为水晶报表是分批分组的,所以不能在水晶报表端进行排序。
有谁知道为什么上述方法不起作用? 我们甚至尝试将其导入临时表,然后导入活动表,有效地执行了两次排序命令,但有时仍会失败!
您应该在插入之前对子查询进行排序。 插入时排序在 Access 中没有任何影响,除了您可以在插入时获得的预览。
SELECT * INTO {0} FROM (SELECT TOP 100 * [Text;FMT=Delimited;HDR=YES;IMEX=1;DATABASE={1}].[{2}] ORDER BY RANK) as vCSV
请注意,严格来说,结果表没有索引,因此是一个堆并且没有定义的排序顺序(没有第一/第二/第 n 条记录,任何排序都同样有效)。 但实际上,这可能会奏效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.