2

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

我有一个包含大约 17000 行数据的 Excel 表。excel 工作表的列标题已经过编辑,使其与我要导入我的 excel 数据的表(比如 table3)的列标题相匹配。

例如,在 excel 表中,数据是这样的,

Name   Age
2      23

表 3 也是相同的形式,如

Name  Age
1      23

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

4

4 回答 4

1

SQL Server 包含一个导入/导出向导。它使用起来非常简单直观,只要您的数据类型匹配,您就不会有任何问题。

于 2012-12-19T08:07:29.587 回答
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 数据的每一行重复此操作。使用事务和绑定来提高性能。

于 2012-12-19T09:02:42.450 回答
0

您使用的是哪个数据库?因为该方法因数据库引擎和可用的工具而异。正如 SWeko 所说,在 SQL Server Management Studio 中您确实可以直接导入 Excel 文件,还有一些更通用的工具,例如 DB Visualiser,它可以让您在更多数据库中执行相同操作,或者您可以使用 sql 生成sql 通过使用模板并使用 vlookup 定义数据来为您插入代码,然后您只需运行所有插入命令即可将数据添加到数据库中。

于 2012-12-19T08:41:30.383 回答
0

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

于 2012-12-19T08:53:55.187 回答