向SQL表添加数据行

时间:2012-12-19 08:04:33

标签: sql sql-server visual-studio-2010 excel

我有一个SQL数据库,它由几个表组成 表格1 表2 表3等等

我有一张excel表,其中包含大约17000行数据。 excel表的列标题已经过编辑,以便它们匹配我要导入Excel数据的表(例如table3)的列标题。

例如,在excel表中,数据类似于

Name   Age
2      23

表3也是相同的形式,如

Name  Age
1      23

我想知道,比如如何将上述Excel工作表中的数据添加到SQL数据库中的此表3中。有人可以给我一些想法或指示吗???

4 个答案:

答案 0 :(得分:1)

SQL Server附带Import / Export wizard。它使用起来非常简单直观,只要您的数据类型匹配,就不会有任何问题。

答案 1 :(得分:1)

据我所知,您只想一次向特定表添加数据。

不确定您使用的是哪种编码语言,但简而言之:

  • 使用流阅读器逐行阅读CSV文件。
  • 将每一行解析为某种数据类型(StringList或vector< String>等)。分隔符将是','并且引号字符将为'''。
  • 根据解析后的数据构建“值字符串”(SQL命令需要)。我的意思是: 值字符串的格式应为“rowid,integer,integer,'text','text',...”。此字符串中的“条目”数量应等于表中的列数(包括表的主键)。

    与值类型为INTEGER的SQL列对应的条目不必用单引号括起来。对于具有值类型TEXT,TINYTEXT等的SQL列,它们必须用单引号括起来,如上所示。 我不相信甚至需要指定rowid,你可以用'?'替换它,给你:

     "?, integer, 'text', 'text', integer, ..." 
    

    或任何情况。

  • 然后使用SQL INSERT INTO命令将每一行插入到所需的表中,如下所示:

    String sqlStatement = "INSERT INTO TableName VALUES ( " + valueString + " )";
    

在你的情况下:

    String sqlStatement = "INSERT INTO Table3 VALUES ( ?, 2, 23, ... )";
  • 然后执行语句(c ++,SQLite,注意sqlite3 *不应该在这里真正声明):

    int      rc;
    sqlite3* db;
    char*    zErrMsg = 0;
    rc = sqlite3_exec(db, sqlStatement, NULL, NULL, &zErrMsg);
    if ( rc != SQLITE_OK )
       return false;
    return true;
    
  • 对每行csv数据重复上述操作。使用事务和绑定来提高性能。

答案 2 :(得分:0)

您使用的是哪个数据库?因为该方法取决于数据库引擎和可用的工具。正如SWeko所说,在SQL Server Management Studio中你确实可以直接导入Excel文件,有些工具更通用,比如DB visualiser,它可以让你在更多的数据库中做同样的事情,或者你可以用sql来生成sql通过使用模板并使用vlookup定义数据为您插入代码,然后您只需运行所有insert命令将数据添加到DB。

答案 3 :(得分:0)

您必须看到:http://support.microsoft.com/kb/321686 有一个几乎相同的问题:http://stackoverflow.com/questions/5141521/how-to-insert-data-from-excel-sheet-to-sql-server-2005