`
Sharpleo
  • 浏览: 573783 次
  • 性别: Icon_minigender_1
  • 来自: newsk
社区版块
存档分类
最新评论

bulk insert 文本文件数据导入

阅读更多
1。关于大容量数据导入导出的一些方法

  SQL SERVER提供多种工具用于各种数据源的数据导入导出,这些数据源包括本文文件、ODBC数据源、OLE DB数据源、ASCII文本文件和EXCEL电子表格。

  2.常用工具

  DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包

  使用SQL SERVER复制发布数据

  BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出

  BULK INSERT实现从数据文件导入数据到SQL SERVER实例

  分布式查询实现从一个数据源选择数据插入到SQL SERVER实例

  SELECT INTO 语句插入数据表

  3.导入导出的数据

  1。导入数据的目标表必须存在。导出数据的目标文件如果存在,则将重写上面的内容。如果不存在,则BCP自动创建文件

  2。数据文件中的数据必须是字符格式或是先前由bcp工具生成的格式(本机格式)

  3。必须对相应的表拥有足够的权限

  4。数据导入导出工具的简单用法

  4.数据导入导出工具的简单用法

  a.DTS

  DTS是一组图形工具和可编程对象,是开发者可以将取自完全的不同源的数据析取、转换并合并成一个或者多个。

  它的特点就是可以融合完全不同源的数据源 这在企业改进中应用很大 。

  这里涉及到一个DTS包,它是一个有组织的链接、DTS任务、DTS转换和工作流约束的集合。

  关于DTS的操作请参看相关具体文献。

  b.BCP

  它常用于将大量的数据从另外的程序转移到SQL SERVER表中。当然也可以用于将表中数据传输到数据文件中。

  下面是一些BCP的简单用法(关于很多的选项使用看相关文档)

  --前序,开启xp_cmdshell

  --关于xp_cmdshell的一些知识请看http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspx

  EXEC sp_configure 'show advanced options', 1;RECONFIGURE;

  EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

  --环境

  create table test

  (

  id int,

  value varchar(100)

  )

  go

  insert test values(1,'s1')

  insert test values(2,'s2')

  insert test values(3,'s3')

  insert test values(4,'s4')

  go

  --1将表的数据导出到TEXT.txt文件中

  exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -c -Usa -P123456'

  --如果是WINDOWS身份直接xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:test.txt -T -c'

  --2将TEXT.txt文件中的数据复制到test1表

  select*into test1 from test where 1=2exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:test.txt -c -Usa -P123456'

  select*from test1

  --3将TEST表的ID字段复制到TEXT.txt中

  exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:test.dat -T -c'

  --4将test表中的第一行移动到text.txt中

  exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test " queryout e:test.txt -c -Usa -P123456'

  --关闭xp_cmdshell

  EXEC sp_configure 'show advanced options', 1;RECONFIGURE;

  EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;


  c.BULK INSERT

  它只能用于数据导入到SQL SERVER实例中,但是我们一般会选择使用它,因为它比BCP使用工具快。

  小例子:

  --truncate table test

  BULK INSERT tempdb..test

  FROM 'E:test.txt'

  WITH (

  FIELDTERMINATOR =',',--字段分割符号

  ROWTERMINATOR ='n'--换行符号

  )select*from test /*id value----------------------

  1 s12 asds3 sadsa100 2asda*/

  ps:只写最简单用法,具体参数很多,参考MSDN

  d.分布式查询

  --包含访问OLE DB 数据源中的远程数据所需的全部连接信息。

  --当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用OLE DB 连接并访问远程数据的一次性的临时方法。

  --对于较频繁引用OLE DB 数据源的情况,请改为使用链接服务器。

  --A.将OPENROWSET 与SELECT 和SQL Server Native Client OLE DB 访问接口一起使用(MSDN)

  以下示例使用 SQL Server Native Client OLE DB 访问接口访问 TEST.A 表,该表位于远程服务器SERVER1 上的 POOFLY 数据库中.

  SELECTa.*FROM OPENROWSET('SQLNCLI', 'Server=SERVER1;Trusted_Connection=yes;',

  'SELECT GroupName, Name, DepartmentID

  FROM POOFLY.TEST.A

  ORDER BY GroupName, Name') AS a;

  --B. 使用Microsoft OLE DB Provider for Jet(MSDN)

  以下示例通过 Microsoft OLE DB Provider for Jet 访问 Microsoft Access Northwind 数据库中的 Customers 表。

  SELECTCustomerID, CompanyName

  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

  'C:Program FilesMicrosoft OfficeOFFICE11SAMPLESNorthwind.mdb';

  'admin';'',Customers)

  GO

  为了导入大型对象数据,OPENROWSET BULK 子句支持三个选项,允许用户以单行或单列行集导入数据文件的内容。

  你可以指定其中一个大型对象选项,而不是使用格式化文件。

  大型对象选项包括:

  SINGLE_BLOB

  以单行读取data_file 的内容,以varbinary(max) 类型的单列行集返回内容。

  SINGLE_CLOB

  以字符读取指定数据文件的内容,以varchar(max) 类型的单行、单列行集返回内容,使用的是当前数据库的排序规则,例如文本或Microsoft Word 文档。

  SINGLE_NCLOB

  以Unicode 读取指定数据文件的内容,以nvarchar(max) 类型的单行、单列行集返回内容,并使用当前数据库的排序规则。

  以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件中的文件数据插入 varchar(max) 列中。

  CREATE TABLE my_Test(Document varchar(max))

  GO

  INSERT INTO my_Test select*FROM OPENROWSET(BULK N'E:test.txt', SINGLE_CLOB) AS Document

  GOselect*from my_Test/*Document

  ASDSADASDSADSADSAFKJHFAS HKLASJHASHBKDSAHKJDHSAKJDHSAKDHSAKDHSA

  e.SELECT INTO

  关于这个的用法 相信大家都很清楚了 我就不说明了。

  5。优化导入导出数据的一些方法

  1。使用最小日志记录:

  a.恢复模式是简单模式或者大容量日志记录模式。如果你是完整模式,可以在进行操作前改成大容量日志模式,插入后改回来

  b.目的表没有触发器,没有索引,指定了TABLOCK

  2。将数据从多个客户端并行导入到单个表:

  a.如果是完整恢复模式,改成大容量日志模式

  b.指定了TABLOCK

  c.表上没有索引

  3。使用批处理:通过设置BCP或者BULK INSERT的相关选项,是用于可以指定在操作过程中发给SQL的每个批处理的行数。

  4。禁用触发器和约束:默认情况下是禁用的。如果要检查,可以在复制完成后进行一次更新操作(当然值不可以变)

  5。对数据文件中的数据排序:通过设置ORDER提示,提高性能。默认数据文件是不排序的。

  6。控制锁定行为:指定大容量操作过程获得一个大容量更新表级锁,这样可以减少表上锁的争夺。

  7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时,对有DEFAULT的列插入默认值,而是改成在列中值为NULL。

分享到:
评论

相关推荐

    bulk insert导入数据

    ### Bulk Insert导入数据知识点 #### 一、Bulk Insert概述 - **定义**:`BULK INSERT` 是 SQL Server 提供的一种高效数据导入工具,能够帮助用户快速地将大量数据从文本文件导入到数据库表中。 - **优势**: - **...

    SQL SERVER BULK INSERT用法

    BULK INSERT 是 SQL Server 中的一种 BulkCopy 功能,允许用户快速将大量数据从文本文件或其他数据源导入到数据库表或视图中。下面是 BULK INSERT 的详细用法和参数解释: 基本语法 BULK INSERT [ [ 'database_...

    sql.rar_Bulk Insert

    这里,`<table_name>`是目标数据库表,`<file_path>`是包含要导入数据的文件路径,`FIELDTERMINATOR`和`ROWTERMINATOR`定义了字段之间的分隔符和行结束标志。 在进行Bulk Insert时,需要注意以下几点: 1. **数据...

    使用BULK INSERT大批量导入数据 SQLSERVER

    ### 使用BULK INSERT大批量导入数据到SQL Server 在数据库管理与开发中,高效地导入大量数据是一项重要的技能。SQL Server 提供了多种方法来处理此类需求,其中`BULK INSERT`命令因其简单且高效的特性而被广泛使用...

    文本文件批量导入sql数据库

    3. **使用BULK INSERT命令(SQL Server)**:在SQL Server中,可以使用BULK INSERT语句来批量导入数据。例如: ```sql BULK INSERT TableName FROM 'C:\path\to\file.csv' WITH (FIELDTERMINATOR = ',', ...

    sql2008用SQL语言将txt文本文件导入数据库

    其中,`database_name` 是数据库的名称,`schema_name` 是模式的名称,`table_name` 是要导入数据的表的名称,`data_file` 是要导入的 txt 文本文件的路径和名称,`option` 是导入选项。 在本例中,我们使用以下...

    将海量数据导入到sql中

    #### 使用BCP导入数据的步骤: 1. **准备数据文件**:首先,需要将要导入的数据整理成BCP可识别的格式,通常是CSV或固定宽度的文本文件。 2. **设置BCP参数**:通过命令行指定BCP的参数,如数据源文件路径、目标...

    文本文件导入到SQL库

    1. **SQL Server Management Studio (SSMS)**:对于Microsoft SQL Server,SSMS提供了一个直观的界面,可以通过“任务”->“导入数据”来导入文本文件。 2. **BULK INSERT命令**:在T-SQL中,BULK INSERT语句可以...

    plsql批量导入数据

    外部表的数据源可以是文本文件、目录或目录下的所有文件。创建外部表后,使用INSERT语句将数据导入内部表。例如: ```sql CREATE TABLE ext_table ( col1 VARCHAR2(50), col2 NUMBER ) ORGANIZATION EXTERNAL ( ...

    如何实现海量文本数据导入MS_SQL_Server2000数据库.doc

    最后,执行批处理文件,BCP工具将按照指定参数读取文本数据并导入到数据库中。如果需要,还可以在导入后对数据进行清理,比如去除字段前的空格。 BCP工具的优势在于其效率高,适用于处理大量数据。然而,正确配置...

    将txt与excel文件导入SQLServer数据库的sql代码

    - BULK INSERT是SQL Server提供的一个功能强大的语句,它允许将数据从一个文本文件直接导入到数据库表中。 - 该语句支持多种文件格式和分隔符,使得处理CSV、TXT等文本文件变得方便。 - BULK INSERT语句在执行时...

    文本导入sql

    - `[database_name]`:指定要导入数据的目标数据库名称。 - `[schema_name]`:指定目标数据库中的模式名称。 - `[table_name]`:指定目标表的名称。 - `file_path`:待导入的文本文件路径。 - `data_import_options`...

    sqlserver导入数据

    在实际应用中,数据可能来自各种来源,如 Excel 文件、CSV 文件、文本文件等。将这些数据导入到 SQL Server 数据库中,可以方便地对数据进行管理、分析和处理。同时,SQL Server 也提供了强大的数据处理和分析功能,...

    excel数据导入到sql server数据库中,

    - **BULK INSERT T-SQL命令**:对于大量数据,可以使用BULK INSERT语句直接从Excel文件批量导入数据。需要将Excel文件保存为CSV格式,因为BULK INSERT只支持文本格式。 - **Openrowset函数**:通过在查询中使用...

    SQL SERVER数据导入导出等辅助功能小工具

    SSIS是SQL Server中用于ETL(Extract, Transform, Load)操作的强大工具,支持从各种数据源导入数据,如文本文件、Excel表格、其他数据库等,并能对数据进行清洗、转换,然后导出到SQL Server中。通过图形化界面...

    Excel2017工作表中如何导入.txt文件.docx

    本文将详细介绍如何使用Excel 2017导入文本文件,并结合SQL Server 2000的BULK INSERT命令进行进一步的数据导入。 首先,Excel 2017提供了“文本导入向导”功能,它可以帮助用户轻松地将`.txt`或`.csv`等文本文件...

    文本,Excel导入导出到SQL数据库

    3. **数据库工具**:许多数据库管理工具,如Navicat、SQL Server Management Studio,提供图形化界面,支持直接从Excel导入数据。 4. **批量导入**:对于大量数据,可能需要编写脚本实现批处理,避免内存溢出和性能...

Global site tag (gtag.js) - Google Analytics