如何导入文本文件和保存数据到数据库
本文关键字:保存 数据 数据库 文件 文本 何导入 导入 | 更新日期: 2023-09-27 18:08:07
我有这个项目:
- 导入
.txt
文件 - 连接SQL Server数据库
- 将所有数据传输到数据库
文本文件按制表符分为四个字段,以便于数据库。
我已经使用富文本框完成了第一步,并将所有数据保存在字符串上。我的想法是分割字符串的每一行,并保存在一个数组,但然后:我如何分割每一行,这样我就可以保存字段正确吗?如何将SQL Server上的数据库连接到c#上的项目?
让我们一步一步地解决这个问题…
获取数据:
将文本文件转换为字符串变量。
string readText = File.ReadAllText("path to my file.txt");
更多信息在这里
现在我们有了一个字符串,我们可以解析 it
List<string> listStrLineElements = List<string> listStrLineElements = line.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();// You need using System.Linq at the top.
关于在新行中分割的更多选项可以在这里找到
现在,您需要将每个元素拆分到自己的行中;你说你有tab 分隔符,这很好(像逗号分隔符(CSV)这样的东西现在更常见,但tab也可以工作!)…为此,我们可以这样做:
List<string> rowList = listStrLineElements.SelectMany(s => s.Split(''t')).ToList();// The 't is an *escape character* meaning tab.
现在,您需要一个类似循环的东西来遍历这些条目并将其插入数据库,这意味着我们现在需要数据库连接…
连接数据库
Code Projects(另一个有用的网站)有这个关于从c#创建SQL连接的教程;下面是代码摘要(请阅读文章,这个网站不是让人替你编写/查找代码的!)
确保您使用的是SQL命名空间…
using System.Data.SqlClient;
private void sqlCon(List<string> x)
{
//Replace with your server credentials/info
SqlConnection myConnection = new SqlConnection("user id=username;" +"password=password;server=serverurl;" +"Trusted_Connection=yes;" +"database=database; " + "connection timeout=30");
try
{
myConnection.Open();
for (int i = 0; i <= x.Count -4; i += 4)//Implement by 3...
{
//Replace table_name with your table name, and Column1 with your column names (replace for all).
SqlCommand myCommand = new SqlCommand("INSERT INTO table_name (Column1, Column2, Column3, Column4) " +
String.Format("Values ('{0}','{1}','{2}','{3}')", x[i], x[i + 1], x[i + 2], x[i + 3]), myConnection);
myCommand.ExecuteNonQuery();
}
}
catch (Exception e){Console.WriteLine(e.ToString());}
try{myConnection.Close();}
catch (Exception e){Console.WriteLine(e.ToString());}
}
注意,你很可能需要修改/编辑我的循环;它背后的逻辑是实现i乘4,这样你就可以读取你的每一列,所以列Count(条目数)必须少4,这样你就不会得到一个越界的索引(在记事本中输入这一切我不确定我是否得到了所有的逻辑正确,但再次,如果它是错误的,你必须修复的东西,我们不只是为人们写代码)。
请注意!
像string.format()这样的内容会让您打开SQL注入的大门,您确实应该查找SQL参数,但这将完成工作。以下是一些我认为必须阅读的文章:
c#中防止SQL注入
什么是SQL注入(W3-schools)
您应该在这里查看有关此主题的MSDN文档这将提供有关如何连接到SQL server数据库的一些详细信息。
要连接到数据库,您需要一个连接字符串,其中包含app.config文件中的所有信息。一旦连接到数据库,在代码中添加新行甚至更新一行都没有问题。只需构建一个Query,在其中为新行的每一列输入字符串数据!
关于如何构建SQL查询以及如何连接到Microsoft网站上的数据库,有大量的文档,请查看:)
您可以尝试从命令行使用BCP。这对你拥有的权限以及如何访问数据库做了一些假设,但基本上你可以在数据库服务器上调用它(这是一个隐藏的功能),或者你可以在本地复制文件:
https://msdn.microsoft.com/en-us/library/ms162802.aspxBCP.exe . .in -S -U -c -t
-c is "character format"-t is字段结束符- TAB
留空如果是可信连接,可以用-T替换-U和-P。一些建议:这些事情总是通过导入到一个阶段表,做任何你需要的更改,然后让一个SQL函数处理转移到生产表来更好地处理。这样,您就可以确保不会意外地丢失数据。
我建议在这种情况下使用列表和数据表。与数组相比,列表的使用是干净的,使用数据表对数据库进行操作也是如此。你可以参考这篇关于stackoverflow的文章,从文本文件中检索数据到数据表中。这篇文章也可以帮助
希望这对你有帮助。