1、直接用Sql语句查询
2、先用excle中的数据生成xml文件,再把xml导入数据库
第一种方法(方法二以后再试),找到联机丛书里实现此功能的Sql语句如下:
SELECT
FROMOpenDataSource('MicrosoftJetOLEDB40',
'DataSource="c:Financeaccountxls";UserID=Admin;Password=;Extendedproperties=Excel50')xactions
语句是有了,但我还是试了很久,因为各个参数具体该怎么设置它没有说。Data
Source就是excel文件的路径,这个简单;UserId、Password和Extended
properties这三个属性我改成了各种各样的与本机有关的用户名、密码以及excel版本都不对,最后用上面例子里的值“User
ID=Admin;Password=;Extended
properties=Excel
50”才成功了,晕啊;最后个“xactions”更是查了很多资料,其实就仅仅是excel文件里所选的工作表名而已,怪我对excel不够熟悉了,另外注意默认的Sheet1要写成[Sheet1$]
最后,看看我成功的测试
数据库里建好一个表testTable_1,有5个字段id,
name,
date,
money,
content,C盘下book1xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句:
insertintotestTable_1([name],[date],[money],[content])
Select[姓名],[日期],[金额],[内容]
FROMOpenDataSource('MicrosoftJetOLEDB40',
'DataSource="C:Book1xls";
UserID=Admin;Password=;Extendedproperties=Excel50')[Sheet1$]
select里的列名我一开始用代替,但发现输出顺序与我预期的不同,是“金额、内容、日期、姓名”,不知道具体有什么规律,就老老实实写名字了。 *** 作成功
回过头来看看市场部的要求,假设在我这张表里实现,可以先判断如excel里存在与记录相同的name字段(name要唯一非空)时就删除记录,之后再插入,这样简单,但自增的id字段会因为插入而改变,那是不行的了。可行的方法是先读出excel里全部记录,然后用游标一条条分析,如果存在这个name就更新否则就插入。OK,下次就不用让他们再对着文档一条条Update了
方法/步骤
1
第一导入数据结构
打开本地计算机上的
sql
server
management
studio
客户端软件:
2
本地电脑:登陆本机数据库连接控制端:
3
选择您要导出到服务器的数据库然后鼠标右键:选择生成sql脚本:
4
选中本地电脑需要导出脚本的库名字
5
需要选择选择兼容sql2005的版本的脚本:
修改sql脚本的保存路径:记录下这个路径
查看生产脚本生成的选项:
成功生成sql脚本:并记录下脚本导出的路径
连接到虚拟主机提供的目标数据库服务器:
并点击新建查询,拷贝您导出的
sql
脚本代码(此代码为第一步导出的sql脚本代码)到上图显示的查询分析器中,点击分析脚本,如果没有语法错误,就点击执行脚本,直到执行完毕。
导入数据结构完毕
第二:导入数据库数据
下面咱们开始导入数据库表中的数据:登陆您本地的数据库:
点击您本地计算机上的数据库右键-任务-导出数据:
选择目标数据库,如下添加虚拟主机提供给您的数据库信息(服务器地址,用户名,密码,数据库):
点击下一步,点击下一步,选中所有表,并确保“目标”
点击下一步,直到执行完毕:这样你的本地数据库就导入到虚拟主机上了
导入数据库数据完毕
你用的mysql吧,而且没有客户端的,只有一个server吧。
假如你是我说的这种情况:
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的sql)
mysql>source d:testsql
如果是其他的数据库,你就直接在工具里执行不就得了。
鼠标右键点击连接名称,然后点击“打开连接”
创建数据库
第1步,创建数据库
点击菜单栏“查询”下的“新建查询,就可以打开输入sql语句的地方。
然后输入创建数据库的sql语句,点击运行,可以看到sql语句执行结果。
鼠标右键连接名称,选择“刷新”,就可以看到创建的数据库了
第2步,修改数据库编码
因为我们数据库里会存放中文内容,所以需要修改数据库编码,不然会面会报错。按下图设置数据库的编码。
修改完,点击“确定”按钮。
创建表
数据库shop名称前面的图标是灰色的,表示当前没有使用这个数据库。
在数据库名称上鼠标右键,选择“打开数据库”。
点击数据库(shop)下的查询,鼠标右键选中“新建查询”。以这种方式打开的查询编辑器里的sql语句都是针对当前这个数据库的。
在查询编辑器里输入下面创建商品表(Product)的sql语句,点击“运行”按钮就会执行sql语句。
-- 创建商品表(Product) CREATE TABLE Product (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, product_type VARCHAR(32) NOT NULL, sale_price INTEGER , purchase_price INTEGER , regist_date DATE , PRIMARY KEY (product_id));
鼠标右键点击“表”,选中“刷新”,我们就可以看到创建的表。双击表名,可以看到创建的表和sql语句里定义的一样。
插入数据
点击下图红框的地方,我们回到刚才写sql语句的查询编辑器里。
在查询编辑器里写入下面插入数据的sql语句。
-- 插入数据 INSERT INTO Product VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20'); INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'); INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL); INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20'); INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15'); INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20'); INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28'); INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
这时候不要点击“运行”,因为运行会把这个“查询编辑器”里所有的sql都执行一遍。但是创建表的sql语句刚才我们已经执行过了,现在只需要执行创建数据的sql语句。
首先,用鼠标选中要执行的那部分sql语句。
然后点击下图红框的地方,就会只执行选中的sql语句。
我们可以通过界面下方的sql执行结果,看sql运行是否有报错,如果没有报错,表示sql运行成功。
双击表名,我们就可以看到已经插入的数据。
ps:如果你之前打开过表,会遇到下面的问题
出现运行选中代码后,product表未生成数据。
解决办法:按下图 *** 作先关掉打开的表,然后重新打开
我们按下图顺序 *** 作,将刚才的sql语句保存下来,万一以后需要。
保存后的sql语句,可以在下图红框的地方看到
我们也可以把创建数据库的sql语句保存下来。
我们可以看到,创建数据库的语句保存在连接名下(图中红色的部分),因为这部分语句是创建数据库的,不针对任何特定的数据库。
而数据库shop下创建的sql语句保存在它自己的查询里面(图中蓝色部分),表示这里的语句是针对这个特定的数据库的 *** 作。
双击保存的查询名称,可以再次打开查询编辑器,对sql进行编辑。
导出数据库
按下图 *** 作我们将数据库导出成文件。这样以后你可以将文件分享给其他人,别人也可以使用你的数据库,或者作为数据库的备份,哪天你数据库里的数据丢了,可以使用这个文件恢复。
导出成功后,我们就可以在刚才保存文件的路径下看到这个sql脚本文件后缀是sql,这种类型的文件叫做sql脚本文件。
我们使用软件notepad++打开sql脚本文件(windows用notepad++,在mac上可以用sublime text),没有这个软件的去官网下载一个,这个软件可以打开各种类型的文件,是技术学习的必备工具。
打开后可以看到sql脚本文件,就是我们刚才写的sql语句,还有软件导出时自动加了些sql语句。所以sql脚本文件就是一个包括了sql语句,文件名后缀是sql的文件。
如果你有特别留意的话,会发现我们刚才导出的sql脚本文件里,有这样一句sql:
DROP TABLE IF EXISTS `product`;
也就是说,如果数据库里已经有这个表了,那么就删除表以后再执行后面的sql语句。
因为有时候数据库里面表了,如果没有这一句会报错。
导入sql脚本文件
按下图 *** 作把刚才的sql文件导入数据库里。
选择要导入的sql脚本文件,其他默认,然后点击开始。
出现下面的信息,表示导入成功。如果不是下面的信息,表示导入有错误,具体查看报错信息,根据报错信息顺藤摸瓜来解决。
导入成功后,点击关闭。刷新数据库可以看到导入的数据。
Mick《sql基础教程》里的数据如何导入数据库里?
前面我们演示了创建数据库、在哪写sql语句、导出sql脚本文件,导入sql脚本文件,知道了sql脚本文件是怎么来的。现在我们回到Mick《sql基础教程》中的第1章的1-3《SQ概要:sql语句及其种类》(对应书里第32页)。
我们看如何把书中说的sql脚本文件(CreateTableProductsql)导入数据库里。
为了演示整个过程,我们把刚才创建的表删掉。
第1步,修改sql脚本文件
用notepad++打开sql脚本文件,瞅瞅里面有啥。
我们看到里面是创建表和增加数据的sql语句。
因为有时候导入数据会报错,当再次运行导入sql脚本文件,会报类似下面的错误:表已经存在。
为了防止上面的错误,我一般都会在建立表的sql前面加上这么一句(product是表名,根据你的实际需求,修改成你对应的表名):
-- 表存在时,先删除表 DROP TABLE IF EXISTS Product;
第2步,创建数据库
因为我们前面已经创建了数据库。后面导入数据,如果没有数据库,需要先创建数据库。
第3步,导入sql脚本文件
按下图步骤 *** 作
导入结果显示未成功(Unsuccessfully),我们看如何根据报错信息顺藤摸瓜找到原因。
将下图1处的下拉框拉到最上面,我们就可以看到详细的报错信息是: [Err] 1366 - Incorrect string value: "\xD0\xF4" for column。
把这个报错信息放到搜索引擎中,很快就可以找到解决方案。报错原因是因为编码的问题。
或者报下面的错误:
解决办法:用notepad++打开sql脚本文件,然后按下图修改sql脚本文件编码:
在notpad++中设置好编码以后,记得点击“保存”使sql脚本文件修改生效。
我将修改编码后的sql脚本文件保存到下面这个文件里了
再次运行导入sql文件,执行成功。刷新表,可以看到导入的数据。
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
======================================================
SELECT
FROM OpenDataSource( 'MicrosoftJetOLEDB40',
'Data Source="c:\book1xls";User ID=Admin;Password=;Extended properties=Excel 50')[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT
FROM OpenDataSource ( 'MicrosoftJetOLEDB40',
'Data Source="c:\Finance\accountxls";User ID=Admin;Password=;Extended properties=Excel 50')xactions
2、将Excel的数据导入SQL server :
======================================================
SELECT into newtable
FROM OpenDataSource( 'MicrosoftJetOLEDB40',
'Data Source="c:\book1xls";User ID=Admin;Password=;Extended properties=Excel 50')[Sheet1$]
实例:
SELECT into newtable
FROM OpenDataSource( 'MicrosoftJetOLEDB40',
'Data Source="c:\Finance\accountxls";User ID=Admin;Password=;Extended properties=Excel 50')xactions
3、将SQL SERVER中查询到的数据导成一个Excel文件
======================================================
T-SQL代码:
EXEC masterxp_cmdshell 'bcp 库名dbo表名out c:\Tempxls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC masterxp_cmdshell 'bcp saletesttmpdboCusAccount out c:\temp1xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC masterxp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubsauthors ORDER BY au_lname" queryout C:\ authorsxls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODBConnection
cnopen "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cnexecute "masterxp_cmdshell 'bcp "SELECT col1, col2 FROM 库名dbo表名" queryout E:\DTxls -c -Sservername -Usa -Ppassword'"
4、在SQL SERVER里往Excel插入数据:
======================================================
insert into OpenDataSource( 'MicrosoftJetOLEDB40',
'Data Source="c:\Tempxls";User ID=Admin;Password=;Extended properties=Excel 50')table1 (A1,A2,A3) values (1,2,3)
T-SQL代码:
INSERT INTO
OPENDATASOURCE('MicrosoftJETOLEDB40',
'Extended Properties=Excel 80;Data source=C:\training\inventurxls')[Filiale1$]
(bestand, produkt) VALUES (20, 'Test')
总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便!
以上就是关于如何把Excel表中数据导入数据库全部的内容,包括:如何把Excel表中数据导入数据库、怎样从数据库中读出数据,然后导入新的数据库、如何将写好的sql语句导入到数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)