从自动下载的.sql文件中填充SQL数据

时间:2012-11-21 21:52:09

标签: c# sql database import

我有一个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代码之前插入了一个断行。

我已经在项目中使用所有必需的列重新创建了表但是如何让项目在单击Button(名为CommandButton1)时下载文件,然后将所有数据解析为表中的所需列在我的项目中(下载文件中的数据用逗号分隔,似乎一直都是这样)。

2 个答案:

答案 0 :(得分:1)

使用Robbie的答案中的代码并详细说明:

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();
        }
    }     

答案 1 :(得分:0)

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

How to download a file from a website in C#

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

How to execute an .SQL script file using c#