如何把600万数据导入到SQL Server中?CSDN NET编程基础

合集下载

sqlserver数据库迁移的几种方式

sqlserver数据库迁移的几种方式

sqlserver数据库迁移的几种方式
最近在公司上班,有时候需要将公司服务器上的数据库copy到自己电脑上带回家,心情好的时候加会小班嘛。

很多朋友可能像本人一样不会,或者不熟悉如何快速的迁移数据库。

方法一:脚本法
如果你的数据库每天都有更新,而且今天改动量不大,可以将你所有的改动弄成脚本,放到本地数据库执行即可。

就行一般公司开发写数据库发布脚本一样。

方法二:备份与还原法
在服务器的数据库中选中要转移的数据库,按鼠标右键,选所有任务->备份数据库;将备份copy到本地,选中本地已有的数据库(没有需要新建)右键→任务→还原数据库。

找到你copy下来的.bak文件即可,值得提醒是,有时候会出现错误:2个数据库不是一个数据库。

这种情况点→选项勾上覆盖现有数据库即可。

方法三:如果只是将服务器上的数据库copy到本地数据库,则右键→导出数据,按照向导导到对应的本地数据库(前提是本地数据库没有数据,如果有数据,他不会覆盖会出现2条相同的记录),而且完了之后还得到处所有的函数和存储过程,所以该方法不推荐。

方法四:附加法
首先分离数据库连接,然后将数据库文件(.mdf文件)copy到本地,然后右键→附加找到该.mdf文件即可。

SQL Server数据库中批量导入数据的四种方法

SQL Server数据库中批量导入数据的四种方法

在SQL Server数据库中批量导入数据的四种方法,在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。

其实,在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。

他的作用就是把另外一张表中的数据插入到当前表中。

若用户想要的时表与表数据的合并,则可以采用这条语句。

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

教你在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。

sql server导数据表的方法

sql server导数据表的方法

一、背景介绍SQL Server 是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业级应用程序和数据存储中。

在数据库管理中,经常需要将数据表导出或导入到不同的数据库中,以便进行数据分析、备份恢复或数据迁移等操作。

掌握 SQL Server 导数据表的方法对于数据库管理人员和开发人员来说非常重要。

二、使用 INSERT INTO 语句导出数据表1. 连接至目标数据库首先需要使用 SQL Server Management Studio(SSMS)或者其他数据库管理工具连接至目标数据库。

2. 编写 INSERT INTO 语句可以使用以下语法将数据表的内容导出到另一个数据库中:```sqlINSERT INTO 目标数据库.目标模式.目标表SELECT * FROM 源数据库.源模式.源表;```其中,目标数据库为要导入数据的数据库名称,目标模式为目标表所在的模式名称,目标表为要导入数据的表名称;源数据库、源模式和源表分别为原始数据表所在的数据库名称、模式名称和表名称。

3. 执行 INSERT INTO 语句在 SSMS 或者其他数据库管理工具中执行编写好的 INSERT INTO 语句,即可将源数据表的内容导入到目标数据库中的目标表中。

三、使用 BULK INSERT 命令导出数据表1. 准备数据文件首先需要将源数据表的内容导出到一个数据文件中,可以使用 SQL Server 提供的 bcp 命令或者其他数据导出工具。

2. 编写 BULK INSERT 命令可以使用以下语法将数据文件中的内容导入到目标数据库的目标表中:```sqlBULK INSERT 目标数据库.目标模式.目标表FROM '数据文件路径'WITH(FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',CODEPAGE = 'ACP');```其中,目标数据库、目标模式和目标表分别为要导入数据的数据库名称、模式名称和表名称;数据文件路径为数据文件所在的路径;FIELDTERMINATOR 为字段分隔符,ROWTERMINATOR 为行分隔符,CODEPAGE 为数据文件的编码方式。

SQL Server 导入导出教程

SQL Server 导入导出教程

SQL Server 导入/导出教程1、打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server。

注意,有些空间的数据库导入导出需要sqlserver20000带sp4补丁才可以操作。

步骤如下图:2、弹出窗口后输入内容。

"总是提示输入登陆名和密码"可选可不选,如图2。

3、注册好服务器后,点击打开。

如果是选择了"总是提示输入登陆名和密码"的话再点了确定后会提示输入用户密码,如图3。

4、进入后,选择到您的数据库,如testdb。

在上面点右键,"所有任务">>"导入数据",如图4。

5、进入DTS导入/导出向导,点击“下一步”按钮继续6、选择数据源,输入数据源所在的数据库服务器名称、用户名、密码和要复制数据的源数据库,点击“下一步”按钮图6:7、选择“在SQL Server数据库之间复制对象和数据”方式,点“下一步”继续8、这一步可以把"包括扩展属性"和"排序规则"两个选择上。

接着去掉左下的"使用默认选项",点击右下角的"选项"来进行配置。

9、图8中点"选项"后会弹出图9,把"复制数据库用户和数据库角色"与"复制对象级权限"两个选项去掉,点确定回到图8接着点"下一步"进到图10。

10、设定调度方式,一般选“立即运行”就可以,然后点“下一步”继续11、点"完成"开始执行。

12、正在进行数据导入中13、如果一切正常,提示成功复制如图13,那就大功告成了。

SQL Server 导入/导出错误排查如果提示导入失败,出现图14情况,这时不要急着点"完成"关闭窗口。

双击中间的"出现错误"会出现详细的失败原因。

SQL Sever导入数据的方法-数据库维护重要方式

SQL Sever导入数据的方法-数据库维护重要方式

SQL Sever导入数据的方法-数据库维护重要方式有很多用户新开通数据库后问我们怎么将自己本地数据库数据发布到我们的服务器上.一般有两种方法: 1. 数据库还原, 实际数据库库还原不能达到这个目的, A: 用户没有权限做数据库还原. B: 用户本地数据库和我司服务器数据库的用户名不一致.2. 数据库导入: 这种方法可以较好的解决问题.但一些细节需要注意.思路如下:A: 将本地数据库表,存储过程.视图等. 生成 Sql脚本. *B: 使用我司服务器提供的数据库用户名替换 Sql脚本里面的用户名.C: 在我司数据库服务器运行新生成的Sql脚本, 这样就在服务器上创建好了数据库表和存储过程结构. D: 在我司数据库服务器运行数据库导入导出, 将本地数据库的数据发布到服务器上. 导入过程完成.下面就详细演示一下流程.1. 首先选择本地服务器(数据源)数据库, 选择 "所有任务" 下的 "生成SQL脚本" ,选择 "编写全部对象脚本" 或者根据您数据库实际, 选择 "全部表","全部存储过程","全部视图" 等.2. 选择 "选项" 选种表脚本选项中间的几个项目. 其中 "编写主要健,外键, 默认值和检查约束脚本"非常重要. 必选, 单击确定. 保存文件成一个sql脚本(ex.sql)3. 编辑脚本文件(ex.sql),将文件中的用户名删除(因为服务器上的数据库用户名和你本地数据库用户名不一样,不删除会导致问题),你可以使用文本编辑器(记事本/写字板/EditPlus) 等.替换所有的用户名替换为空格,一般用户名为 d bo 或者你自己分配的用户名1) 将"[username]." 替换为空格. 例如 "[dbo]." 替换为空格2) 将"username." 替换为空格. 例如 "dbo." 替换为空格例如: 下面是一个删除存储过程的sql脚本if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[product_3]') and OBJ ECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[product_3]替换后就为if exists (select * from sysobjects where id = object_id(N'[product_3]') and OBJECTPROPERT Y(id, N'IsProcedure') = 1)drop procedure [product_3]注意要将 dbo. 和[dbo]. 都替换为空格. 否则下面的步骤将不能正常运行4. 连接上目标服务器数据库(我司数据库服务器),执行修改后的sql脚本文件,这样源数据库和目标数据库的数据库对象(表,视图,存储过程等)就完全相同了. 开始准备导入和导出数据Sql运行界面数据库建立时注意问题: 在执行sql 语句时会出现警告提示. 都是正常的.可以忽略, 例如警告: 已创建表 'authors',但其最大行大小(16128)超过了每行的最大字节数(8060)。

详解如何挑战4秒内百万级数据导入SQL Server

详解如何挑战4秒内百万级数据导入SQL Server

详解如何挑战4秒内百万级数据导入SQL Server对于大数据量的导入,是DBA们经常会碰到的问题,在这里我们讨论的是SQL Server 环境下百万级数据量的导入,希望对大家有所帮助。

51CTO编辑向您推荐《SQL Server入门到精通》专题。

实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间。

本实验中所用到工具为Visual Studio 2008和SQL Server 2000、SQL Server 2008,分别使用5中方法将100万条数据导入SQL Server 2000与SQL Server 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器。

感兴趣的朋友可以下载源代码自己验证一下所用时间。

还要有一点需要进行说明,本实验中执行SQL语句的地方使用了IsLineFrameWork框架中的DataProvider模块,这个模块只是对SQL配置的读取和封装,并不会对最终结果有本质性的影响,关于IsLineFrameWork框架方面的知识,请参考“IsLineFrameWork”框架系列文章。

下面进入正题,分别使用基本的Insert 语句、使用BULK INSERT语句、在多线程中使用BULK INSERT、使用SqlBulkCopy类、在多线程中使用SqlBulkCopy类五种方法,挑战4秒极限。

数据库方面使用SQL Server 2000与SQL Server 2008,表名TableB,字段名称为Value1,数据库名可以在App.config中修改,默认为test。

图1 试验中的5种方法方法一.使用基本的Insert 语句这种方法是最基本的方法,大多数人一开始都会想到这种方法。

但是Insert语句似乎并不适合大批量的操作,是不是这样呢?本方法中将100万数据分为10个批次,每个批次10万条,每10万条1个事务,分10次导入数据库。

在sql server中迁移数据的几种方法 -回复

在sql server中迁移数据的几种方法 -回复

在sql server中迁移数据的几种方法-回复在SQL Server中迁移数据的几种方法数据迁移在数据库管理中是一个常见的任务,无论是因为升级服务器、合并数据库、迁移到云端还是备份恢复等原因,我们都需要将数据从一个数据库迁移到另一个数据库中。

在SQL Server中,有几种方法可以实现数据迁移,本文将逐步回答如何使用不同的方法来迁移数据。

一、使用SQL Server Management Studio(SSMS)SQL Server Management Studio(SSMS)是微软为SQL Server提供的管理工具,它具有强大的功能,包括数据迁移。

以下是使用SSMS迁移数据的步骤:1. 打开SQL Server Management Studio,连接到源数据库和目标数据库。

2. 在对象资源管理器中,展开源数据库和目标数据库所在的服务器。

3. 右键单击源数据库,选择“任务”-> “导出数据”选项。

4. 在导出数据向导中,按照向导的步骤进行设置,包括选择数据源、选择目标数据库、选择要迁移的表和视图等。

5. 完成向导后,SSMS会自动生成T-SQL脚本来执行数据迁移。

点击“完成”按钮,将开始执行数据迁移操作。

使用SSMS迁移数据的优点是操作简单,适用于小规模的数据库迁移任务。

然而,对于大规模的数据库和复杂的迁移需求,可能需要使用其他方法。

二、使用SQL Server Integration Services(SSIS)SQL Server Integration Services(SSIS)是SQL Server提供的一个功能强大的ETL(Extract, Transform and Load)工具,适用于数据仓库和大规模数据迁移等复杂的数据处理任务。

以下是使用SSIS迁移数据的步骤:1. 打开SQL Server Data Tools(SSDT),创建一个新的Integration Services项目。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

亲自下载CSDN社区600万用户数据设计两条编程题目考验你的.NET编程基础园子里这两天讨论的比较多的是CSDN-中文IT社区600万用户数据在互联网上的传播,作为一名技术人员,暂且放下各自的想法的意见,仅仅从技术的角度来讲,分析和考验一下我们的编程基础。

把下载到的压缩文件释放到硬盘中,得到文件.sql。

作为技术人员,对这个文件产生好奇心和编程的冲动。

于是提出了下面的两条编程题目:1 如何把600万数据导入到SQL Server中?2 如何选择合适的密码加密方法?这个SQL文件有273MB,用SQL Server Management Studio打开它,会产生OutOfMemory异常,用记事本打开也很慢,推荐用Ultra Edit源代码编辑软件打开。

估计大家的硬盘里面都有这个文件了,我也就不必给密码和邮件加上阴影了。

用自己曾经注册到的邮件找一下,果然找到了自己的帐号和密码,确实是明文的。

分析一下SQL文件,它是由换行符号分开的,以#分隔用户帐号,密码,电子邮件的格式。

这和逗号分隔文件格式很相似,于是动手把它导入到SQL Server中。

请参考下面的两行代码CREATE TABLE CsdnUser ([USER] NVARCHAR(MAX) )BULK INSERT CsdnUser FROM N'F:\.sql'然后就是漫长的等待了,在4G内存,4核的Windows 7 x64的机器上,也跑了近5分钟才把数据从文本文件导入到SQL Server的CsdnUser表中。

平时喜欢研究性能,性能改善研究,心中一阵窃喜。

执行完成后,看到Messages中显示(6428632 row(s) affected),果然有600多万行数据,放数据库文件的磁盘一下子耗费了近6G的空间。

跑一下SQL语句SELECT [User] FROM CsdnUser,用户数据就已经存放到了SQL Server数据库文件中了。

这样完成了文本文件到SQL Server的导入过程。

如果我还想进一步的分解每一行的数据,像下面的结果显示这样SELECT dbo.GetSplitOfIndex(User,'',1) AS [UserId]dbo.GetSplitOfIndex(User,'',2) AS [Password]dbo.GetSplitOfIndex(User,'',3) AS [Email]FROM CsdnUser则还需要写一个split函数,以分解开用#分开的用户数据。

GetSplitOfIndex函数来源于互联网,地址是/plus/view-168590-1.html,作者秩名,感谢他的智慧。

函数的源代码如下所示CREATE FUNCTION [dbo].[GetSplitOfIndex](@String NVARCHAR(MAX) , --要分割的字符串@split NVARCHAR(10) , --分隔符号@index INT --取第几个元素)RETURNS NVARCHAR(1024)ASBEGINDECLARE @location INTDECLARE @start INTDECLARE @next INTDECLARE @seed INTSET @String = LTRIM(RTRIM(@String))SET @start = 1SET @next = 1SET @seed = LEN(@split)SET @location = CHARINDEX(@split, @String)WHILE @location <> 0AND @index > @nextBEGINSET @start = @location + @seedSET@location = CHARINDEX(@split, @String, @start)SET @next = @next + 1ENDIF @location = 0SELECT @location = LEN(@String) + 1RETURN SUBSTRING(@String,@start,@location-@start)END自SQL Server 2005起就开始集成CLR,允许.NET托管代码运行于SQL Server中,用我们熟悉的.NET API可以轻易的完成任务。

打开Visual Stdio 2010,创建一个SQL Server CLR项目,SQL Server CLP函数的源代码清单如下[Microsoft.SqlServer.Server.SqlFunction]public static SqlString Split(string UserLine,int Index){if (!string.IsNullOrEmpty(UserLine)){string[] lines = Regex.Split(UserLine, " # ");if (lines.Length == 3)return new SqlString(lines[Index]);elsethrow new ApplicationException("invalid input line");}return new SqlString("");}它的调用方法和TSQL函数的方式一样,如下图所示SELECT dbo.Split(User,0) AS [User Id]dbo.Split(User,1) AS [Password]dbo.Split(User,2) AS [Email]FROM CsdnUser顺利完成第一题,如果你有更好的方法,欢迎留言。

对于密码是否用明文,是否要加密,各种情况下所采取的方法都有道理。

不给密码加密,明文传送是不值得推荐,不过冒似很多系统都是用明文保存在数据库中的。

如果你担心明文不好,容易被人家获取到,可以采用可逆的加密。

请参考我的文章《数据加密小工具》,它对需要保护的数据进行简单的加密,也很容易的逆反到当初的明文在我的知识管理系统Data Solution的用户反馈功能中,用户输入反馈的内容,发送到指定的邮箱中,因为使用的是smtp的方式,所以要把用户名和密码写到程序中去,但为了防止别人很轻易的从IL代码中读到到我的邮件的帐号和密码,我就使用了上面的可逆加密的方法,把邮件帐号和密码进行加密后,再放到程序代码中,这样可以增加被破解的难度。

也没有把很重要的资料放到这个用于接受用户反馈的邮件帐号中,毕竟还是可能被人家破解的。

再进一步的,可以采用.NET提供的算法,进行Hash运算或是加密。

MD5是公认的不可逆的加密算法,它的调用方法如下byte[] Original = Encoding.Default.GetBytes(txt_Source.Text); MD5 s1 = MD5.Create(); //使用MD5byte[] Change = puteHash(Original); 加密txt_Result.Text = Convert.ToBase64String(Change);请参考文章《使用MD5將字串加密C# VS2005 Sample Code》学习MD5的调用方法。

如果你需要MD5的调用例子代码,下面的代码应该可以帮助到你,代码来原于园子里的朋友,地址是/konooo/archive/2009/01/22/1379920.html/// MD5 16位加密加密后密码为大写/// </summary>/// <param name="ConvertString"></param>/// <returns></returns>public static string GetMd5Str(string ConvertString){MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();string t2 = BitConverter.ToString(puteHash(UTF8Encoding.Default.G etBytes(ConvertString)), 4, 8);t2 = t2.Replace("-", "");return t2;}/// <summary>/// MD5 16位加密加密后密码为小写/// </summary>/// <param name="ConvertString"></param>/// <returns></returns>public static string GetMd5Str(string ConvertString){MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();string t2 = BitConverter.ToString(puteHash(UTF8Encoding.Default.G etBytes(ConvertString)), 4, 8);t2 = t2.Replace("-", "");t2 = t2.ToLower();return t2;}/// <summary>/// MD532位加密/// </summary>/// <param name="str"></param>/// <returns></returns>static string UserMd5(string str){string cl = str;string pwd = "";MD5 md5 = MD5.Create();//实例化一个md5对像// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode 等的选择byte[] s = puteHash(Encoding.UTF8.GetBytes(cl));// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得for (int i = 0; i < s.Length; i++){// 将得到的字符串使用十六进制类型格式。

相关文档
最新文档