将数据行添加到SQL表

我有一个SQL数据库,其中包括几个表,如表1表2表3等等

我有一个包含约17000行数据的Excel表。 Excel工作表的列标题已被编辑,以便它们匹配我想要导入我的Excel数据的表格(比如表格3)的列标题。

例如,在Excel表格中,数据就像,

Name Age 2 23 

表3也是一样的forms,比如

 Name Age 1 23 

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

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

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

我知道你只想一次将数据添加到特定的表中。

不知道你正在使用哪种编码语言,但总之:

  • 使用stream读取器逐行阅读CSV文件。
  • 将每行parsing为某种数据types(StringList或vector <String>等)。 分隔符将是','并且引号字符将是'''。
  • 从parsing的数据构build一个“值string”(SQL命令需要)。 我的意思是:值的string应该是格式“rowid,整数,整数,文本”,“文本”,…“。 这个string中'entries'的数量应该等于你表中的列数(包括表的主键)。

    与具有值typesINTEGER的SQL列对应的条目不需要被单引号包围。 对于具有值types为TEXT,TINYTEXT等的SQL列,它们必须用单引号包围,如上所示。 我不相信甚至需要指定rowid,你可以用'?'replace它,给你:

      "?, 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数据。 使用事务和绑定来提高性能。

你正在使用哪个数据库? 因为该方法依赖于可用的数据库引擎和工具而变化。 正如SWeko所述,在SQL Server Management Studio中,您确实可以直接导入Excel文件,还有一些比较通用的工具,如DB可视化工具,这可能会使您对更多的数据库执行相同的操作,也可以使用sql生成sql通过引用模板插入代码并使用vlookup来定义数据,那么您只需运行所有插入命令即可将数据添加到数据库中。