[英]Import embedded csv file to a SQL Server database
我正在使用一些代码来创建一个新数据库,然后用一些必需的数据填充该数据库。 我已经编写了一个MySqlCommand
方法,该方法连接到SQL Server并向其发送SQL指令。 我编写了以下代码,以检查是否可以从硬盘上的.csv
文件导入所需数据,并且一切正常:
MySqlCommand("BULK " +
"INSERT Competition " +
"FROM 'D:\\Users\\Stephen\\Documents\\Competition.csv'" +
"WITH (" +
"FIELDTERMINATOR = ','," +
"ROWTERMINATOR = '\n')");
现在,我已经将.csv
文件添加为Visual Studio项目中的嵌入式资源,并且希望从那里将数据导入数据库。 我发现可以使用以下方式访问嵌入式资源:
var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Competition.csv");
我现在陷入了困境,因为我不知道如何允许SQL Server访问嵌入式资源数据,我怀疑我需要以不同的方式进行处理。 我将不胜感激。
我有一个类似的项目
我所做的就是将项目添加到数据表中,并赋予它严格的值。
然后我遍历每一行并将其插入,
这花了很长时间。
我无法进行批量插入的原因是因为csv在我的本地计算机上,而sql服务器在另一个远程位置。
如果您的计算机上有sql,则insert命令如下所示:
BULK
INSERT myCSVFile
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
好的,因此我想出了一种方法来做,并认为我会发布答案以帮助他人:
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BetfairDatabaseMDI.embeddedResources.Competition.csv"))
{
using (StreamReader reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
string result = reader.ReadLine();
result = "'" + result + "'";
result = result.Replace(",", "','");
MySqlCommand("INSERT INTO Competition " +
"VALUES (" + result + ")");
}
}
}
我的想法是逐行读取嵌入的资源,并发送指令以1乘1的方式将每一行添加到SQL表。我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.