搜档网
当前位置:搜档网 › 将excel表中的数据导入导出至SQL数据库中

将excel表中的数据导入导出至SQL数据库中

将excel表中的数据导入导出至SQL数据库中
将excel表中的数据导入导出至SQL数据库中

将excel表中的数据导入导出至SQL数据库中

导入

如果表已存在,SQL语句为:

insert into aa select * from OPENDA TASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=D:"OutData.xls;Extended Properties=Excel 8.0')...[sheet1$]

其中,aa是表名,D:"OutData.xls是excel的全路径sheet1后必须加上$

如果表不存在,SQL语句为:

SELECT * INTO aa FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=D:"OutData.xls;Extended Properties=Excel 8.0')...[sheet1$]

其中,aa是表名,D:"OutData.xls是excel的全路径sheet1后必须加上$

可能会发生的异常:

如果发生“链接服务器"(null)" 的OLE DB 访问接口"Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。

无法初始化链接服务器"(null)" 的OLE DB 访问接口"Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel 文件未关闭.

如果发生“不能将值NULL 插入列'Grade',表'student.dbo.StuGrade';列不允许有空值。INSERT 失败。

语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配

以上操作的是office 2003,如果要操作office 2007则需采用如下方式

如果表已存在,SQL语句为:

insert into aa select * from OPENDA TASOURCE('Microsoft.Ace.OLEDB.12.0',

'Data Source=D:"OutData.xls;Extended Properties=Excel 12.0')...[sheet1$]

其中,aa是表名,D:"OutData.xls是excel的全路径sheet1后必须加上$

如果表不存在,SQL语句为:

SELECT * INTO aa FROM OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0',

'Data Source=D:"OutData.xls;Extended Properties=Excel 12.0')...[sheet1$]

其中,aa是表名,D:"OutData.xls是excel的全路径sheet1后必须加上$

如果发生“链接服务器"(null)" 的OLE DB 访问接口"Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。

无法初始化链接服务器"(null)" 的OLE DB 访问接口"Microsoft.Jet.OLEDB.4.0" 的数据源对象。”异常可能是excel 文件未关闭.

如果发生“不能将值NULL 插入列'Grade',表'student.dbo.StuGrade';列不允许有空值。INSERT 失败。

语句已终止。”异常,则可能是excel文件与数据库表中的字段不匹配

以上操作的是office 2003,如果要操作office 2007则需采用如下方式

另外,还要对一些功能进行配置:

1、打开SQL Server 2005外围应用配置器,选择“功能的外围应用配置器”,选中“启用OPENROWSET或OPENDATASOURCE支持”,点击确定。

2、在C:"WINDOWS目录下将temp文件夹的安全选项卡中,在用户或组名称中,选择“SQLServer2005ReportingServicesWebServiceUser$PC17$MSSQLSERVER(PC17/SQLServer2005ReportingServicesWebS erviceUser$PC17$MSSQLSERVER”用户,将此用户的写入,修改权限选中。点击确定。(设置它是因为将此将excel 文件读入SQL数据库时,是在C:"WINDOWS"temp下建立了一个临时文件,所以需要将此文件夹的SQLServer2005权限设置为可写入的。如果使用的是管理员帐户,则需要不需此项设置。因为管理员有读写的权限。)

导出

使用insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;IMEX=YES;DATABASE=C:""Documents and Settings""Administrator""桌面""export2.xls',[sheet1$]) select * from StuGrade可以将数据导出至excel2003中,但前提必须是表已经存在,字段名都已有且与表对应。而使用下面的自动创建文件和表头,又会发生异常,插不进去。目前看来只能一条一条插。

解决这个问题可以先创建一个excel文件并添加表头,可以使用下面的语句:

string filePath = "C:""Documents and Settings""Administrator""桌面""export3.xls";

SqlConnection conn = new SqlConnection("Server=.;Database=Student;Integrated Security=true");

conn.Open();

SqlCommand comm = new SqlCommand("select * from StuGrade", conn);

SqlDataAdapter da = new SqlDataAdapter(comm);

DataSet ds = new DataSet();

da.Fill(ds, "StuGrade");

Microsoft.Office.Interop.Excel._Application xlapp = new ApplicationClass();

Workbook xlbook = xlapp.Workbooks.Add(true);

Worksheet xlsheet = (Worksheet)xlbook.Worksheets[1];

int colIndex = 0;

int RowIndex = 1;

//开始写入每列的标题

foreach (DataColumn dc in ds.Tables[0].Columns)

{

colIndex++;

xlsheet.Cells[RowIndex, colIndex] = dc.Caption;

}

xlbook.Saved = true;

xlbook.SaveCopyAs(filePath); //创建文件

使用这个方法必须添加“using Microsoft.Office.Interop.Excel;”引用

这样使用上面那个SQL语句即可实现。

我在与office2007导的时候,将MICROSOFT.JET.OLEDB.4.0和Excel 5.0换成了MICROSOFT.ACE.OLEDB.12.0和Excel 12.0,将表名换成excel2003的表,这样只能导出一行,而且还会发生异常,这个问题还有待解决。

使用insert into opendatasource('microsoft.jet.oledb.4.0',

'Data source=D:"export.xls;Extended Properties=Excel 5.0')...[Sheet1$]

(字段名) V ALUES (对应值)也可以实现导入。前提必须是表已经存在,字段名都已有且与表对应。而且一次只能导入一条,必须是office2003,换成office2007则可以导入,但会发生异常。

通常导入与导出用一条SQL语句不太实用,因为用一条SQL语句限制太多,所以大多数情况下是一条记录一条记录写入数据库中,使用一条一条导入数据库的方法如下。其原理是将excel文件当作数据表来用:

导入

代码为:

string strExcelFileName = @"D:"OutData.xls"; //excel文件

string strSheetName = "sheet1"; //工作表名

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strExcelFileName + ";Extended Properties = 'Excel 8.0;HDR=NO;IMEX=1'";

//连接字符串

string strExcel = "select * from [" + strSheetName + "$] ";//SQL语句

//定义存放的数据表

DataSet ds = new DataSet();

//连接数据源

OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

//适配到数据源

OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, conn);

adapter.Fill(ds, strSheetName + "$");

conn.Close();

// 一般的情况下. Excel 表格的第一行是列名

dataGridView1.DataSource = ds.Tables["res"]; //将数据和dataGridView绑定

导出

方法1:从DataSet向excel中导出数据

string filePath = "C:""Documents and Settings""Administrator""桌面""export4.xls";//导出的文件名和路径string ReportName=”aaaaa”; //导出时给文件加上文件头

SqlConnection conn = new SqlConnection("Server=.;Database=Student;Integrated Security=true"); //定义连接conn.Open();

SqlCommand comm = new SqlCommand("select * from StuGrade", conn);

SqlDataAdapter da = new SqlDataAdapter(comm);

DataSet ds = new DataSet();

da.Fill(ds, "StuGrade");

Microsoft.Office.Interop.Excel._Application xlapp = new ApplicationClass();

Workbook xlbook = xlapp.Workbooks.Add(true);

Worksheet xlsheet = (Worksheet)xlbook.Worksheets[1];

Range range = xlsheet.get_Range(xlapp.Cells[1, 1], xlapp.Cells[1, ds.Tables[0].Columns.Count]);

range.MergeCells = true;

//定义单元格中存放文本的样式

xlapp.ActiveCell.FormulaR1C1 = ReportName;

xlapp.ActiveCell.Font.Size = 20;

xlapp.ActiveCell.Font.Bold = true;

xlapp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;

int colIndex = 0;

int RowIndex = 2;

//开始写入每列的标题

foreach (DataColumn dc in ds.Tables[0].Columns)

{

colIndex++;

xlsheet.Cells[RowIndex, colIndex] = dc.Caption;

}

//开始写入内容

int RowCount = ds.Tables[0].Rows.Count;//行数

for (int i = 0; i < RowCount; i++)

{

RowIndex++;

int ColCount = ds.Tables[0].Columns.Count;//列数

for (colIndex = 1; colIndex <= ColCount; colIndex++)

{

xlsheet.Cells[RowIndex, colIndex] = ds.Tables[0].Rows[i][colIndex - 1];//dg[i, colIndex - 1];

xlsheet.Cells.ColumnWidth = 10;

}

}

xlbook.Saved = true;

xlbook.SaveCopyAs(filePath);

xlapp.Quit();

GC.Collect();

方法2:从DataGridView中向excel导出数据:

SqlConnection conn = new SqlConnection("Server=.;Database=student;Integrated Security=true");

conn.Open();

SqlCommand comm = new SqlCommand("select * from StuGrade where StuID='0000000'", conn); //StuGrade是表名,StuID是字段名

SqlDataAdapter da = new SqlDataAdapter(comm);

DataSet ds = new DataSet();

da.Fill(ds, "StuGrade");

Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application();

myExcel.Visible = false;

//定义导出的路径

string Path = "C:""Documents and Settings""Administrator""桌面";

myExcel.Application.Workbooks.Add(true);

myExcel.Caption = "abcdefghe";

int Colunm = 1;

for (int i = 0; i < ds.Tables[0].Columns.Count; i++)

{

myExcel.Cells[1, Colunm++] = ds.Tables[0].Columns[i].Caption;

}

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

{

Colunm = 1;

for (int j = 0; j < ds.Tables[0].Columns.Count; j++)

{

myExcel.Cells[i + 2, Colunm++] = ds.Tables[0].Rows[i][j];

}

}

myExcel.ActiveWorkbook.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);

myExcel.Quit();

理论上来说,从DataSet中导出和从DataGridView中导出执行的速度应该是一样的,但是,从我数次的实验来看,从DataGridView中导出数据比从DataSet中快的多,在数据量为300条记录时,用DataGridView比DataSet快2倍左右,这我目前还不知道为什么。这种方法,只适合少量的数据,如果数据量过大,则时间开销会很大。

将Sql server中数据导出到excel

将Sql server中数据导出到excel 方法一:从excel中导入数据 选择sqlserver连接

方法二:(Excel文件已经存在,而且已经按照要接收的数据创建好表头——追加记录)insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\1.xls',sheet1$) select*from dbo.qin_test 操作后报错: 消息15281,级别16,状态1,第1 行 SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'Ad Hoc Distributed Queries'。有关启用'Ad Hoc Distributed Queries' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器" 。 方法三:(Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写) exec master..xp_cmdshell'bcp "select * from dbo.qin_test" queryout c:\2.xls -c -q -S"A382ZJSBQZ7FPEJ" -U"sa" -P"qin"'

消息15281,级别16,状态1,过程xp_cmdshell,第1 行 SQL Server 阻止了对组件'xp_cmdshell' 的过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用'xp_cmdshell'。有关启用'xp_cmdshell' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。 2013-7-15 秦瑞泽

SQL Server数据导入到Oracle中的方法

SQL Server数据导入到Oracle中的方法 如果我们需要将SQL Server数据库中的数据导入到Oracle数据库中,应该如何操 作呢?下文对该方法的步骤进行了详细的介绍,供您借鉴参考之用。 在我们使用SQL Server数据库的过程中,有时需要将SQL Server数据导出,导 入到其他的数据库中,比如导入到Oracle中。 假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle 的Scott用户 首先需要有安装SQL Server企业版 1.打开工具: 开始->程序->Microsoft SQLServer->导入和SQL Server数据导出数据 2.下一步,选择数据源 [数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。 [服务器]选择要导出数据的服务器,如果是本机,选择(local) [数据库]选择要导出的数据所在的库,这里选择Northwind 3.下一步,选择目的 [目的]选择Microsoft ODBC for Oracle [DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。 如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。 接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle 下一步,完成,出现Microsoft ODBC for Oracle安装界面 [数据源名称]随便输入,比如sss [说明]可以不填 [用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott

实用sql语句:查询结果导出到excel,收缩数据库

--查询结果导出到excel SqlServer exec master..xp_cmdshell 'bcp "select * from mydatabase.dbo.mytable" quer yout c:\temp.xls -c -q -S"." -U"sa" -P"1"' --excel导入到SqlServer BULK INSERT temp1 FROM 'c:\temp1.xls' --收缩数据库 --首先截断事务日志 backup log mydatabase with no_log --收缩数据库 dbcc shrinkdatabase('mydatabase',0) --查SqlServer视图sql select text from syscomments where id=object_id('reportsbaseview') select * from information_schema.views --查SqlServer:表名 select * from information_schema.tables where table_name like '%MYTABLE%' --查Oracle:表名 select * from sys.all_tables where table_name = 'MYTABLE' --查Sqlserver列名 select * from information_schema.columns where table_name = ‘MYTABLE’ --查Orable:列名 select * from sys.all_tab_cols where table_name = ' MYTABLE' --查Sqlserver列描述 SELECT * FROM ::fn_listextendedproperty (NULL, 'user' , 'dbo', 'table', ‘MYTABLE’, 'column', def ault) --查Orable:列描述 select * from sys.all_col_comments where table_name = ' MYTABLE' --为查询结果添加序号(pkId必须是整数类型) select number1=(select count(userId) from tuserset as t2 where t2.pkId<=t1.pkId),userId,setN ame from tuserset as t1 --插入100条测试记录 declare @i int set @i=500 while (@i<600) begin

SQL语句导入导出大全

SQL语句导入导出大全[收集] 正巧这两天要用到这个,上网找到一个,回来自己检测一下: /******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q - S"GNETDA TA/GNETDA TA" -U"sa" -P""' /*********** 导入Excel SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名 declare @fn varchar(20),@s varchar(1000) set @fn = 'c:\test.xls' set @s ='''Microsoft.Jet.OLEDB.4.0'', ''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' exec(@s) */ SELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+'' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL insert OPENDA TASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名(列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /** 导入文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -

SQL数据库表如何导入导出到EXCEL中

一.导出 1.选择要导出的数据库表,右键选择“所有任务”,点击“所有任务”下的子菜单“Export Data…”进入“DTS Import/Export Wizard”窗口。 2.点击“下一步”,进入“Choose a Data Source”。 3.“Data Source”更改为“Microsoft OLE DB Provider for SQL Server”;“Server”更改为“笔记本(工控机)名称\WINCC”;下一步使用WINDOWS认证“Use Windows Authentication”;“Database”更改为“项目运行系统下的路径(例如:CC_BGSYJ_14_02_24_11_22_22R)”。 4. 点击“下一步”,进入“Choose a destination”。 5.“Destination”更改为“Microsoft Excel 97-2000”;“File name”建议更改为要导出的数据库表的名字,并指定保存的路径。 6.点击“下一步”,进入“Specify Table Copy Query”。 7. 点击“下一步”,进入“Select Source Table and Views”。 8.选择要导出的数据库表,然后点击“下一步”,进入“Save,Schedule,and replicate package”。 9. 点击“下一步”,“完成”,“确定”,“Done”,数据导出完成。 二.导入 1.选择要导出的数据库表,右键选择“所有任务”,点击“所有任务”下的子菜单“Import Data…”进入“DTS Import/Export Wizard”窗口。 2. 点击“下一步”,进入“Choose a Data Source”。 3.“Data Source”更改为“Microsoft Excel 97-2000”;“File name”选择到指定路径下excel文档(重新制作或者以前导出的)。 4. 点击“下一步”,进入“Choose a destination”。 5.“Destination”更改为“Microsoft OLE DB Provider for SQL Server”;“Server”更改为“笔记本(工控机)名称\WINCC”;下一步使用WINDOWS认证“Use Windows Authentication”;“Database”更改为“项目运行系统下的路径(例如:CC_BGSYJ_14_02_24_11_22_22R)”。 6.点击“下一步”,进入“Specify Table Copy Query”。 7. 点击“下一步”,进入“Select Source Table and Views”。

在SE中建立与SQL数据库连接并导出EXCEL报表

在SE中建立与SQL数据库连接并使用EXCEL 连接SQL数据库自动生成数据 公共部分:(本文中默认设置更具实际要求设置) 1、如果安装完Factory View Studio,首先确认“开始-->所有程序- ->Microsoft SQL Server 2008 R2 --> SQL Server Management Studio”(7.0以上版本)是否存在,如图所示:(开始-->所有程序- ->Microsoft SQL Server 2008--> SQL Server Management Studio[7.0版本]) 2、如果不存在,则在Factory View Studio安装包中找到“Redist-->SQLServerEXPR_2008R2SP2-->SQL Server Install.bat”点击安装,安装步骤如图所示:

3、点击‘Close’,安装完毕。出现“开始-->所有程序- ->Microsoft SQL Server 2008 R2 -->SQL Server Management Studio ”,如图所示: 4、点击‘SQL Server Management Studio’打开SQL数据库,设置默认,点击‘Connect’,如图所示:(记住Sever name,本例为LENOVO-8KADFMC8\SQLEXPRESS)

5、右击‘Database’,点击‘New Database’新建一个数据库,命名为READ,其余设置默认,如图所示:(READ-->Tables中未有AB提供的Tag/Float/String Table)

sql server 2008 导入导出数据大全

sql server 2008 导入导出数据大全 /******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q - S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名 declare @fn varchar(20),@s varchar(1000) set @fn = 'c:\test.xls' set @s ='''Microsoft.Jet.OLEDB.4.0'', ''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' exec(@s) */ SELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+'' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名(列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /** 导入文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa - Ppassword' /** 导出文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -

从+Oracle数据库中导出SQL脚本

从Oracle数据库中导出SQL脚本 基本上用到的语法如下: a. 获取单个的建表和建索引的语法 set heading off; set echo off; Set pages 999; set long 90000; spool DEPT.sql select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual; select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual; spool off; b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例: set pagesize 0 set long 90000 set feedback off set echo off spool scott_schema.sql connect scott/tiger; SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u; spool off; c.获取某个SCHEMA的建全部存储过程的语法 connect brucelau /brucelau; spool procedures.sql select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name) from user_objects u where object_type = 'PROCEDURE'; spool off; 另: dbms_metadata.get_ddl('TABLE','TAB1','USER1')

SQL语句导入导出数据命令大全

标题(MS SQL Server)SQL语句导入导出大全选择自lchzh的 Blog 关键字(MS SQL Server)SQL语句导入导出大全 出处 SQL语句导入导出大全 /******* 导出到excel EXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /*********** 导入Excel SELECT * FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions SELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+’’ 转换后的别名 FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions /** 导入文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’ /** 导出文本文件 EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword’ 或 EXEC master..xp_cmdshell ’bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword’ 导出到TXT文本,用逗号分开 exec master..xp_cmdshell ’bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password’

怎样用excel生成数据库update语句

2010-04-15 14:18 by 听风吹雨, 7150阅读, 16评论, , 需求: 我们需要把Excel中的一些资料更新到数据库表中,比如学生的考试系统,在数据中已经有了考生的ID,这里有一份考生ID和考生成绩的Excel表,我们如何把考生成绩更新到数据库表中呢? 方案: 1.我们最常使用的做法就是把这个Excel表导入到数据库中,在使用update语句来 更新表。没错,这就是我通常使用的方法,但是有些人他们不安常理出牌,有时 候客户说:我只会执行SQL,我不知道怎么把Excel导入到数据库中。 2.这个时候我们如何把要更新的内容生产SQL语句给到客户呢?如何是一两条记录, 我们手动写SQL就可以了,但是如果有几百个学生,我们要手动写几百条语句吗? 是否有批量生成SQL脚本的方法?这就是我们这里要讲到的:使用Excel批量生 成SQL脚本(小技巧) 过程: 这是一个原始的Excel表,它包括了一些ID值和需要更新字段的值: (图:1) 1:确定需要生成的SQL语句模型。 --根据需求写一条SQL模板 update表set[Longitude]='', [Latitude]=''where[ID]=''and[Name]=''

2:删除Excel表中多余的列,保留需要更新和查询条件的列。并按照需要生成的sql语句顺序进行排序。 前面两个列是需要更新的值,后面两个是where的条件字段 (图:2) 3:在Excel表插入空列,拷贝相关的语句进去。 拷贝第一语句放入合适的单元格,把把这一列一拖到底,生成同样的语句 (图:3) 4:把结果拷贝到查询分析器中,使用替换把多余的空格去掉。 (图:4) --下面就是生成的语句 update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' --。。。。。。

java类实现导出各种数据库insert语句

导出insertsql语句 import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.util.ArrayList; import java.util.List; public class Test { private static Connection conn=null; private static Statement sm = null; private static String schema="FJSTL";//模式名 private static String select="SELECT * FROM";//查询sql private static String insert="INSERT INTO";//插入sql private static String values="VALUES";//values关键字 private static String []table={"T_USER"};//table数组 private static List insertList=new ArrayList();//全局存放insertsql文件的数据 private static String filePath="E://insertSQL.txt";//绝对路径导出数据的文件 /** *导出数据库表 *@param args *@throws SQLException */ public static void main(String[] args) throws SQLException { List listSQL=new ArrayList(); connectSQL("oracle.jdbc.driver.OracleDriver", "xxx.xxx.xxx", "xxx", "xxx");//连接数据库 listSQL=createSQL();//创建查询语句 executeSQL(conn,sm,listSQL);//执行sql并拼装 createFile();//创建文件 } /** *创建insertsql.txt并导出数据 */ private static void createFile() { File file=new File(filePath); if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { System.out.println("创建文件名失败!!"); e.printStackTrace(); } } FileWriter fw=null;

Access导入到SQL_Server数据库中的三种方法

Access导入到SQL Server数据库中的三种方法 SQL Server数据库以2005为例,导入方法如下: 一.使用SQL Server的数据库导入/导出功能。首先在要导入到的SQL Srever数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将Access数据库导入到SQL Server数据库中,此种方法如果SQL Server数据库中没有相应的数据表,则会自动创建改表,但是约束等表关系不会同步导入,如果SQL Server中有相同名称并且属性相同的数据表,则会直接将Access数据库中的对应表的数据导入。 在导入过程中,还可以通过SQL语句指定要导入的数据。 使用这种方法一般会出现以下两种错误: (1)无法建立数据流连接 为连接管理器“{FFBF32BF-EE84-4F94-ACDB-D4C5AC4C2941}”指定的连接类型“OLEDB”未被识别为有效的连接管理器类型。当视图创建未知连接类型的连接管理器时会返回此错误。请检查连接类型名称的拼写是否正确。 (2)无法连接源组件 找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。 其他信息: 找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。 ({0DE0CDBB-BCD6-4261-A118-B0CB22DA3C4A}) 具体解决办法是打开SqlServer Configuration Manage,右键单击“Sql Server Integrati on Services”,选择“属性”,将登录身份修改为“Local System(本地系统)”,然后重新启动该服务。 二.使用Access数据库的数据升迁功能。首先点击“工具”菜单,选择“数据库实用工具”,选择“升迁向导”,这是会提示你该功能尚未安装,需要安装XXX之类的信息,点击安装,等待安装成功后,即可弹出“升迁向导”对话框,按照提示下一步直到完成,即可将Acces s数据库导入到SQL Server数据库中。使用此种方法的好处是Access数据库中的所有数据以及表关系都会被原样导入到SQL Server数据库中。 三.使用SQL语句批量导入。1当我们只需要导入Access数据库中的指定表以及指定表的指定列到SQL Server数据库中时,前面的两种方法就显得不那么方便了。而使用SQL语句导入可以方便快捷的导入我们需要的数据。具体代码如下 (1)SQL Serve数据库中已存在要导入数据的表.(这样可以事先按照要导入的Access数据库的数据表创建好需要的关系)

SQL导出到Excel的语句

SQL导出到Excel的语句 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*============================================================= ======*/ --如果接受数据导入的表已经存在 insert into表select*from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) --如果导入数据并生成表 select*into表from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) /*============================================================= ======*/ --如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用: insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) select*from表 --如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写: --导出表的情况 EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"' --导出查询的情况 EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"' 说明. c:\test.xls 为导入/导出的Excel文件名. sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用. 下面是导出真正Excel文件的方法: /*--数据导出EXCEL 导出表中的数据到Excel,包含字段名,文件为真正的Excel文件 ,如果文件不存在,将自动创建文件 ,如果表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 ---*/ /*--调用示例 p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls' --*/

教你在SQLServer数据库中导入导出数据.

教你在SQL Server数据库中导入导出数据 在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一、使用方式的比较 1. 使用Transact-SQL进行数据导入导出 我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM 和INSERT INTO。使用SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。 SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同 当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。 在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDA TASOURCE和OPENROWSET。它们的功能基本上相同,不同之处主要有两点。 (1) 调用方式不同。 OPENDATASOURCE的参数有两个,分别是OLE DB Provider和连接字符串。使用OPENDATASOURCE只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在OPENDATASOURCE(...)后进行引

数据库中用户数据的导出与导入

数据库中用户数据的导出与导入 1.导出: 1.1.进入SQL plus环境 输入口令:orcl 1.2.在该环境下创建目录及选择需要导出的用户,执行以下语句:create or replace directory expdp_dir as ':\'; grant read,write on directory expdp_dir to NC65;

其中: D:\ 导出来的数据存放的位置;NC63 需要导出的用户。 1.3.进入cmd环境

1.4.在该环境下执行以下语句: expdp NC65/NC64 directory=expdp_dir dumpfile=A.dmp logfile=A.log 其中: NC63/NC63 用户/密码(被导用户) A 导出数据文件的命名 就开始在导数据了,等就好了。

2.导入 2.1.在SQL plus 环境下的操作 2.1.1.建立新的用户 CREATE USER NC636 IDENTIFIED BY NC636 DEFAULT TABLESPACE NNC_DATA03 TEMPORARY TABLESPACE temp; GRANT connect,dba to NC636; 其中: NC73 新建的用户及其密码 用户可以不用新建的,在导入的过程中,与原来用户中相同的表或视图就直接跳过了,但是有时候错误可能就是因为那些表格不完整,所以,建议都新建下。

2.1.2.在该环境下执行以下语句: create or replace directory expdp_dir as 'E:\Back'; grant read,write on directory expdp_dir to NC636; 其中: D:\ 被导入文件存放的位置; NC73 需要导入的用户。 2.2.在cmd环境下执行以下命令: impdp NC636/NC636 directory=expdp_dir dumpfile=NC632.dmp logfile=nc632.log REMAP_SCHEMA=NC632:NC636

SQLServer数据库中成批导入数据的几个常用方法

SQLServer数据库中成批导入数据的几个常用方法 在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。如要把产品信息从现有的进销存管理系统中导入到ERP系统中,却让企业用户手工的输入这些信息,不怎么现实。 其实,在SQL Server中本来就集成了很多成批导入数据的方法。有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。 第一种方法:使用Select Into语句 若企业数据库都采用的是SQL Server数据库的话,则可以利用Select Into语句来实现数据的导入。Select Into语句,他的作用就是把数据从另外一个数据库中查询出来,然后加入到某个用户指定的表中。 在使用这条语句的时候,需要注意几个方面的内容。 一是需要在目的数据库中先建立相关的表。如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。则前期是在ERP 系统的数据库中已经建立了这张产品信息表。 二是这种方法只复制表中的数据,而不复制表中的索引。如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。则利用Select Into语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。 三是这条语句使用具有局限性。一般情况下,这只能够在SQL Server数据库中采用。不过,对于SQL Server不同版本的数据库,如2008或者2003,还都是兼容的。若需要导入的对象数据库不是SQL Server的,则需要采用其他的方法。 四是采用这条语句的话,在目的表中必须不存在数据。否则的话,目的表中的数据会被清除。也就是说,这个语句不支持表与表数据的合并。在SQL Server中,有一条类似的语句,可以实现这个功能。这条语句就是:Insert Into。他的作用就是把另外一张表中的数据插入到当前表中。若用户想要的时表与表数据的合并,则可以采用这条语句。两者不能够混淆使用,否则的话,很容易导致数据的丢失。 五是以上两条语句都支持兼容的不同类型的数据类型。如在原标中,某个字段的数

数据库中数据导出到EXCEL

private void navBarItem24_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e) { SqlDataAdapter adpt1 = new SqlDataAdapter("Select * from tb_Area",db.conn); SqlDataAdapter adpt2 = new SqlDataAdapter("Select * from tb_User", db.conn); DataSet ds1 = new DataSet(); DataSet ds2 = new DataSet(); adpt1.Fill(ds1); adpt2.Fill(ds2); Excel.ApplicationClass excel = new Excel.ApplicationClass(); Excel.Workbooks books = (Excel.Workbooks)excel.Workbooks; Excel.Workbook book = (Excel.Workbook)books.Add(Missing.Value); excel.Visible = true; WriteToWorkSheet(excel, ds1, book, "区域信息表"); WriteToWorkSheet(excel, ds2, book, "用户表");

//System.Reflection.Missing miss = System.Reflection.Missing.Value; book.SaveAs("E:\\导出数据.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); book.Close(false,Missing.Value,Missing.Value); books.Close(); excel.Quit(); //https://www.sodocs.net/doc/1b15950296.html,mandText = "Select * from tb_Area"; //adpt1.SelectCommand.Connection = db.conn; } private void WriteToWorkSheet(Excel.ApplicationClass excel,DataSet ds,Excel.Workbook book,string SheetName) { Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); sheet = (Excel.Worksheet)book.ActiveSheet; https://www.sodocs.net/doc/1b15950296.html, = SheetName; for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { excel.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName.ToString(); } for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

相关主题