0

我有一个 C# 项目,我试图用从网上下载的文件自动填充 SQL 表。

该文件是http://ts1.travian.com/map.sql,您会看到它已经为 SQL 数据库操作设置了数据。

以下是它们的外观小片段:

INSERT INTO `x_world`
    VALUES (1517,315,399,3,181705,'New Remial',82126,'Tale',0,'',273);
INSERT INTO `x_world`
    VALUES (67792,107,316,1,175829,'3.Clay',35440,'salvaje_jabali',0,'',244);
INSERT INTO `x_world`
    VALUES (32790,349,360,1,189271,'Lumeria',9702,'Aquifel',90,'APE',20);
INSERT INTO `x_world`
    VALUES (72449,-42,310,1,194313,'New village',2634,'paloc',0,'',24);
INSERT INTO `x_world`
    VALUES (75669,-26,306,1,170802,'Yao Ming',2634,'paloc',0,'',330);

为了便于阅读,我在每个 INSERT 代码之前插入了一个换行符。

我已经在我的项目中重新创建了包含所有必需列的表,但是如何让项目在单击按钮(名为 CommandButton1)时下载文件,然后将所有这些数据解析到我项目表中的所需列中(下载文件中的数据由逗号分隔,似乎一直贯穿)。

4

2 回答 2

1

使用罗比回答中的代码并详细说明:

using System.Net;

//Download
WebClient Client = new WebClient ();
Client.DownloadFile("http://ts1.travian.com/map.sql", @"C:\folder\file.sql");

// Read into a file
var sqltext = System.IO.File.ReadAllText(@"c:\folder\file.sql");
// Split the sql statements up
var sqlStatements = sqltext.Split(';'); 

// Insert
using (SqlConnection connection = new SqlConnection(connectionParameters))
    {   
        connection.Open();
        foreach (var sqlStatement in sqlStatements)  
        {
            SqlCommand command = new SqlCommand(sqlStatement, connection);
            command.ExecuteNonQuery();
        }
    }     
于 2012-11-21T22:16:18.417 回答
0

这里有一些示例代码可以帮助您开始下载文件:

如何在 C# 中从网站下载文件

然后,您可以运行 SSIS/SQL Server 代理/批处理作业来执行数据加载。或者,如果您想在代码中执行此操作:

如何使用 C# 执行 .SQL 脚本文件

于 2012-11-21T22:01:25.713 回答