以编程方式创建数据库并从CSV文件插入数据

时间:2014-07-10 04:21:02

标签: c# sql-server database csv

我在360 CSV文件中有大量数据,我希望使用C#存储在SQL Server数据库中。

我已经安装了Visual Studio 2010,但我没有安装任何版本的SQL Server。

现在我有两个问题:

  1. 是否可以使用C#创建SQL Server数据库(虽然SQL Server不可用)?
  2. 如果是,我如何使用C#创建数据库并将数据插入数据库?
  3. 我尝试过以下代码,从不同来源找到(盲目复制粘贴,因为我不清楚):

    SqlConnection con = new SqlConnection(@"Data Source=SHAWHP\SQLEXPRESS;Initial Catalog=FOO;Persist Security Info=True;User ID=sa");
    string filepath = "C:\\Users\\NKB\\Desktop\\Catchments\\ALKANDA.csv";
    StreamReader sr = new StreamReader(filepath);
    string line = sr.ReadLine();
    string[] value = line.Split(',');
    DataTable dt = new DataTable();
    DataRow row;
    
    foreach (string dc in value)
    {
        dt.Columns.Add(new DataColumn(dc));
    }
    
    while (!sr.EndOfStream)
    {
        value = sr.ReadLine().Split(',');
        if (value.Length == dt.Columns.Count)
        {
            row = dt.NewRow();
            row.ItemArray = value;
            dt.Rows.Add(row);
        }
    }
    
    SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
    bc.DestinationTableName = "tblparam_test";
    bc.BatchSize = dt.Rows.Count;
    con.Open();
    bc.WriteToServer(dt);
    bc.Close();
    con.Close();
    

    但是,它抛出以下异常(与实例有关):

      

    错误是"发生了与网络相关或特定于实例的错误   同时建立与SQL Server的连接。服务器不是   发现或无法访问。验证实例名称是否正确   并且SQL Server配置为允许远程连接。   (提供程序:SQL网络接口,错误:26 - 错误定位   指定的服务器/实例)"

3 个答案:

答案 0 :(得分:1)

根据我的经验,如果应用程序存储或连接到数据库,则必须物理设置数据库,这意味着必须先设置数据库和相应的表及其字段,然后才能建立连接。

是的,您可以使用Visual Studio 创建一个数据库(作为mdf文件),您可以在应用程序中使用它来导入csv数据。

来源:http://www.youtube.com/watch?v=3w2JkLcp-UA

或以编程方式 http://support.microsoft.com/kb/307283

答案 1 :(得分:0)

SQL服务器和数据库完全不同。必须安装SQL Server才能连接到SQL Server。您的错误表明您的服务器无法访问。 可以使用C#ADO.NET创建数据库,但我不鼓励处理它,除非你没有编写服务器管理工​​具。 在Visual Studio中,您可以浏览服务器(View/SQL Server Object Explorer)并根据需要创建数据库。在属性中,您将看到您需要的正确ConnectionString。 Evevn如果您无法访问服务器实例,Visual Studio将使用基于文件的SQL Server:

   <connectionStrings>
    <add name="ConnectionName" 
         connectionString="Data Source=(LocalDb)\v11.0;;AttachDbFilename=|DataDirectory|\MVC5_pr-2-1-alpha1;Initial Catalog=MVC5_pr-2-1-alpha1;Integrated Security=SSPI"
         providerName="System.Data.SqlClient" />
   </connectionStrings>
可以使用

之类的东西创建

  SqlCommand command = new SqlCommand
    ("CREATE TABLE MyTableName(MyCol char(50),Last null,MyNCol char(50));", con);
    command.ExecuteNonQuery();

和是 - SqlBulkCopy是导入大数据的最佳方式之一。

答案 2 :(得分:0)

基于SQL Server的数据库是什么意思?只需安装SQL Server 2008 R2及更高版本。 现在谈谈你的两点:

1)是的,绝对可以从C#

创建数据库

2)请参阅本网站上的Codeproject Linksimilar question