Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server和CSV文件之间的同步_C#_Sql_Sql Server_Csv_Synchronize - Fatal编程技术网

C# SQL Server和CSV文件之间的同步

C# SQL Server和CSV文件之间的同步,c#,sql,sql-server,csv,synchronize,C#,Sql,Sql Server,Csv,Synchronize,在Microsoft Excel中,同步SQL Server中的表(客户)和CSV文件中的客户的更好方法是什么 好的,解释如下: 我正在C#.NET2008中开发一个软件,并在SQLServer2005中创建了一个名为Customers的表。此表的内容来自CSV文件,用户可以添加更多信息,因为SQL表的字段比CSV文件多 第一次很容易。。我只是为CSV文件中的每一行添加新内容。 但是,第二次,由于这些额外字段,我无法从一开始就删除所有表以再次导入它,因此我需要一种方法,可以自动验证SQL表和CS

在Microsoft Excel中,同步SQL Server中的表(客户)和CSV文件中的客户的更好方法是什么

好的,解释如下: 我正在C#.NET2008中开发一个软件,并在SQLServer2005中创建了一个名为Customers的表。此表的内容来自CSV文件,用户可以添加更多信息,因为SQL表的字段比CSV文件多

第一次很容易。。我只是为CSV文件中的每一行添加新内容。
但是,第二次,由于这些额外字段,我无法从一开始就删除所有表以再次导入它,因此我需要一种方法,可以自动验证SQL表和CSV文件中的每条记录?或者我需要逐个处理这些记录?

看看SQL Server集成服务,它可以做您想做的任何事情,而且可以做得更多


或者,如果您确实想对其进行编码,那么我建议对CSV中的所有字段进行散列,并使用该散列来比较每一行。不同的hash=change=updated行。

您可以将CSV表和额外信息分离到一个表和一个视图中。您将有一个表,它只是CSV文件本身的一个哑镜像,并且易于更新:

    TRUNCATE TABLE csvmirror;
    BULK INSERT csvmirror
    FROM 'P:\ath\to\csvfile.csv' WITH
    ( FIELDTERMINATOR = ','
    , ROWTERMINATOR = '\n' );

然后在“csvmirror”表上创建一个视图,用数据库中的额外数据补充直接csv文件数据。

csv数据中是否有键字段?这是您最初的问题,找到一种方法将CSV中的记录与表中的数据相匹配。第二个问题是确保CSV中的密钥不会改变,或者——不那么有趣——确定如何管理可能发生的情况。除最后一个问题外,还有一个更一般的“如果从CSV中删除记录,我该怎么办”问题,这不是软件中的问题,而是您可以控制删除操作的方式。我在CSV数据中有一个关键字段。下面是我想做的:1)C将读取CSV的每一行,并将所有列传递给存储过程2)过程将请求现有注册表(使用键字段),以及:-它存在吗。是:更新(无论是否更改),并将名为UPDATED_BY_USER的字段设置为TRUE。不允许:addnew 3)在CSV记录的末尾,存储过程将从CHECKED=FALSE的客户中删除所有记录(这意味着此记录已从CSV文件中删除),然后将customers表中的所有记录设置为FALSE,对吗?使用哈希的概念很简单(我“知道”的想法之一)但我似乎无法在脑海中把它作为解决方案)