如何把excel导入到sql server 2008

如何把excel导入到sql server 2008,第1张

--首先打开SSMS,然后点击左上角的新建查询(N),在右边d出的窗口中输入一下代码:代码一:----------------------------------------------------------------------------------------use TEST --- ‘TEST’是数据库名字,你可以切换到你想要的数据库或直接输入数据库名字----根据系统需要使用这几段批处理命令打开相应功能EXEC sp_configure 'showadvanced options', 1;GORECONFIGURE;GOEXEC sp_configure 'Ad HocDistributed Queries', 1;GORECONFIGURE;GO----以上为根据实际情况的可选命令----开始插入数据到TEST数据库的一个新表中select into newtable_name fromOpenDataSource('MicrosoftAceOLEDB120','DataSource="c:\daoruxlsx";Extended properties="Excel120;HDR=Yes"')[sheet1$]go------------------------------------------------------------------------PS:1:执行这段代码之前,你需要准备导入的数据。 我用的是Excel 2007, Excel文件的名字为“daoru”,放在C盘目录下。2: 代码中的select into newtable_name from 这是把excel中的数据插入到TEST数据库中,并同时新建表名为newtable_name存放插入的数据3: 代码中的Office2007的数据库驱动为“MicrosoftAceOLEDB120”, 如果是Office2003的话应改成“MicrosoftJetOLEDB40”,还有Office2007中Excel的“Extended properties”中为“Excel120” 而Office2003为“Excel80”4: 代码中'Data Source="c:\daoruxlsx" 就是要导入数据的文件存放路径 (注意后缀:Excel2007的为xlsx;Excel 2003的为xls)5: 代码中的[sheet1$] 为表名,格式为:[XXX$]或者XXX$,不需要中括号也行,而且表名不能以数字开头(其实这是几乎所有编程语言的变量命名规则),切记! 没有修改过名字的话,Excel默认是shee1,shee2,shee36: 当然,你也可以使导入的数据,不用新建表而是直接导入到数据库已有的表中, 只要稍微修改代码就可以了代码二:---------------------------------------------------------------------------------------insert into 已存在的表名 (字段一,字段二) select A,B from OpenDataSource('MicrosoftAceOLEDB120','DataSource="c:\daoruxlsx";Extended properties="Excel120;HDR=Yes"')[sheet1$]go---------------------------------------------------------------------------------------代码二中,A,B表示的意思是Excel中的A列和B列,但是直接输入A,B是没有用的这里还要提醒一点,导入数据的时候,系统默认Excel的第一行数据是字段名所以,你可以把Excel的第一行的前两列数据改为A和B,这样就可以了! 如果Excel中的列数和数据库中的已存在的表的列数相等,也可以改成如下:代码三:---------------------------------------------------------------------------------------insert into 已存在的表名 select from OpenDataSource('MicrosoftAceOLEDB120','DataSource="c:\daoruxlsx";Extended properties="Excel120;HDR=Yes"')[sheet1$]go---------------------------------------------------------------------------------------当然,我们可以利用Data Import for SqlServer等工具来导入,也可以利用SQL Server 2008的DTS导入(在SQL Server ManagementStudio的选择你要导入到的数据库如:TEST,右键选择“任务”——“导入数据”即可

由于项目中加入了新的功能,可以使管理员向数据库中导入Excel数据。因此,在商品管理这块需要对Excel进行 *** 作,在网上查了些资料,根据项目的实际情况进行了一定的优化,这里简单的介绍下。

1C#代码。

<span style="font-family:Microsoft YaHei;font-size:18px;">/// <summary>

/// 上传Excel文件,并将数据导入到数据库

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void lbtnSure_Click(object sender, EventArgs e)

{

// 定义变量,并赋初值

string url = thisfileUpLoadPostedFileFileName;

string urlLocation = "";

// 判断传输地址是否为空

if (url == "")

{

// 提示“请选择Excel文件”

PageClientScriptRegisterStartupScript(PageGetType(), "message", "<script defer>alert('请选择97~2003版Excel文件!');</script>");

return;

}

// 判断获取的是否为地址,而非文件名

if (urlIndexOf("\\") > -1)

{

// 获取文件名

urlLocation = urlSubstring(urlLastIndexOf("\\") + 1);//获取文件名

}

else

{

// url为文件名时,直接获取文件名

urlLocation = url;

}

// 判断指定目录下是否存在文件夹,如果不存在,则创建

if (!DirectoryExists(ServerMapPath("~\\up")))

{

// 创建up文件夹

DirectoryCreateDirectory(ServerMapPath("~\\up"));

}

//在系统中建文件夹up,并将excel文件另存

thisfileUpLoadSaveAs(ServerMapPath("~\\up") + "\\" + urlLocation);//记录文件名到服务器相对应的文件夹中

// ResponseWrite(urlLocation);

// 取得保存到服务器端的文件路径

string strpath = ServerMapPath("~\\up") + "\\" + urlLocation;

// 取得config中的字段

string connectionString = ConfigurationManagerAppSettings["Connect"]ToString();

string strCon = ConfigurationManagerAppSettings["strUpLoad"]ToString();

// 替换变量

strCon = strConReplace("$Con$", strpath);

// 初始化导入Excel对象

ImportExcel excel = new ImportExcel();

// 调用方法,将Excel文件导入数据库

excelTransferData(strCon, "t_Goods", connectionString);

}</span>

2TransferData类。

<span style="font-family:Microsoft YaHei;font-size:18px;">public void TransferData(string strCon, string sheetName, string connectionString)

{

DataSet ds = new DataSet();

try

{

//获取全部数据

OleDbConnection conn = new OleDbConnection(strCon);

connOpen();

string strExcel = "";

OleDbDataAdapter myCommand = null;

strExcel = stringFormat("select  from [{0}$]", sheetName);

myCommand = new OleDbDataAdapter(strExcel, strConn);

myCommandFill(ds, sheetName);

//如果目标表不存在则创建,excel文件的第一行为列标题,从第二行开始全部都是数据记录

string strSql = stringFormat("if not exists(select  from sysobjects where name = '{0}') create table {0}(", sheetName);   //以sheetName为表名

foreach (SystemDataDataColumn c in dsTables[0]Columns)

{

strSql += stringFormat("[{0}] varchar(255),", cColumnName);

}

strSql = strSqlTrim(',') + ")";

using (SystemDataSqlClientSqlConnection sqlconn = new SystemDataSqlClientSqlConnection(connectionString))

{

sqlconnOpen();

SystemDataSqlClientSqlCommand command = sqlconnCreateCommand();

commandCommandText = strSql;

commandExecuteNonQuery();

sqlconnClose();

}

//用bcp导入数据

//excel文件中列的顺序必须和数据表的列顺序一致,因为数据导入时,是从excel文件的第二行数据开始,不管数据表的结构是什么样的,反正就是第一列的数据会插入到数据表的第一列字段中,第二列的数据插入到数据表的第二列字段中,以此类推,它本身不会去判断要插入的数据是对应数据表中哪一个字段的

using (SystemDataSqlClientSqlBulkCopy bcp = new SystemDataSqlClientSqlBulkCopy(connectionString))

{

bcpSqlRowsCopied += new SystemDataSqlClientSqlRowsCopiedEventHandler(bcp_SqlRowsCopied);

bcpBatchSize = 100;//每次传输的行数

bcpNotifyAfter = 100;//进度提示的行数

bcpDestinationTableName = sheetName;//目标表

bcpWriteToServer(dsTables[0]);

}

}

catch (Exception ex)

{

throw new Exception(ex);

}

}

//进度显示

void bcp_SqlRowsCopied(object sender, SystemDataSqlClientSqlRowsCopiedEventArgs e)

{

}

}       </span>

4Web界面样式。

服务器硬件上没什么特别的要求,内存稍微高点,4核CPU,硬盘有个2TB也就够了,其它都是次要的。

至于配置,建议安装Windows server2008服务器专用 *** 作系统+SQL2008数据库,这样性能比较高。(系统和数据库文件,通用Excel网有下载的)

其它的软件上没有什么要求。

1、打开要导入的Excel文件,观察第一列是为字段还是数据
打开SQLServer,在需要导入的数据点击右键 任务-导入数据出现导入导出向导。
点击下一步 ,进入选择数据源页面,注意红框设置。
点击下一步 ,进入选择目标页面,注意红框设置。
点击下一步 ,进入指定表复制或查询页面,注意红框设置。
点击下一步 ,进入选择源表和源视图页面,注意红框设置。
下一步,直到完成。出现执行结果页面。
最后在SqlServer查询表。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10233134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存