现有多个Excel表格,我想将其导入到mssql中。不知道数据表如何创建。难道我建立的数据表字段与Excel中的要一一对应就可以了吗?Excel中有些字段是计算值,例如可以使用A列+B列得到C列。如果原样照抄Excel结构到数据库表,会严重不符合2NF,可是我却不知道如何拆成两个表。
例如:
有Excel字段如下:学号、姓名、物理成绩、英语成绩、数学成绩、平均分
我如何将其导入到mssql中。我是否有必要拆成学生表、成绩表、学生成绩对应表,这三个?如果有必要,导入的时候如何做呢?谢谢

解决方案 »

  1.   

    --TRY 也就是建表的時候c列建立成計算列,導入的時候指定列,就不要指定c列了
    CREATE TABLE TB(a INT,B INT C AS A+B)
    INSERT TB SELECT A,B FROM FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
      

  2.   

    這個導入中的C:\是只的是數據庫服務器上的路徑,如果是個人pC的話還要上傳的服務器上才能用導入的時候分成學生表和成績表 用學號做關聯就可以了吧!最多在有一個課程表也就可以了
      

  3.   

    首先感谢对我这个问题的解释。
    我想在进一步说明我的意图。
    我们经常在一些资料上看到这样的表设计
    Student(sno,sname)学生表
    Course(Cno,Cname)课程表
    Grade(Cno,sno,Grade)成绩表
    我们认为这样的设计可以减少数据冗余,而且不会出现插入、删除、更新异常。
    通常还会提到不要设计成一个大表如
    stu(sno,sname,cno,cname,grade)这样的形式。
    ==============
    但是现在问题是:我已经有一个形如stu的Excel表,我打算将其导入到mssql中的时候通过某种方法拆分成
    student、Course、Grade这三个表。谢谢大家。
      

  4.   

    CREATE TABLE TB(a INT,B INT C AS A+B)
    INSERT TB SELECT A,B FROM FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]