如何把一个文件导入到SQLserver数据库中

 我来答
du瓶邪
推荐于2016-10-07 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2729万
展开全部
一是需要在目的数据库中先建立相关的表。如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。则前期是在ERP系统的数据库中已经建立了这张产品信息表。

二是这种方法只复制表中的数据,而不复制表中的索引。如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。则利用Select Into语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。

三是这条语句使用具有局限性。一般情况下,这只能够在SQL Server数据库中采用。不过,对于SQL Server不同版本的数据库,如2008或者2003,还都是兼容的。若需要导入的对象数据库不是SQL Server的,则需要采用其他的方法。

四是采用这条语句的话,在目的表中必须不存在数据。否则的话,目的表中的数据会被清除。也就是说,这个语句不支持表与表数据的合并。在SQL Server中,有一条类似的语句,可以实现这个功能。这条语句就是:Insert Into。他的作用就是把另外一张表中的数据插入到当前表中。若用户想要的时表与表数据的合并,则可以采用这条语句。两者不能够混淆使用,否则的话,很容易导致数据的丢失。

五是以上两条语句都支持兼容的不同类型的数据类型。如在原标中,某个字段的数据类型是整数型,但是在目的表中这个字段的数据类型则是浮点型,只要这个两个数据类型本来就兼容的,则在导入的时候,数据库是允许的。
zxh4567
推荐于2016-04-17 · TA获得超过6.1万个赞
知道大有可为答主
回答量:2.2万
采纳率:83%
帮助的人:1.2亿
展开全部
  使用场景: 比如将 C:\Test\ 目录下的所有 txt文件内容 导入到 Table_1 中

  --定义临时表,用于存放获取的文件名称
  CREATE TABLE #files (name varchar(200) NULL, sql varchar(7000) NULL)
  --获取文件名称,存放在#files
  INSERT #files(name)
  exec master..xp_cmdshell 'dir c:\test /b'
  --删除不要的文件名称
  DELETE #files WHERE coalesce(name, '') NOT LIKE 'Code%'

  --插入需要 导入文件内容的 命令SQL,需要修改 Table_1(改为导入的Table)和文件路径

  UPDATE #files
  SET sql = 'BULK INSERT Table_1 FROM ''' + 'C:\Test\'+name + ''' WITH (' +
  'DATAFILETYPE = ''char'', FIELDTERMINATOR = ''\t'', ' +
  'ROWTERMINATOR = ''\n'')'

  --开始执行导入
  DECLARE @sql varchar(8000)

  DECLARE cur CURSOR STATIC LOCAL FOR
  SELECT sql FROM #files

  OPEN cur

  WHILE 1 = 1
  BEGIN
  FETCH cur INTO @sql
  IF @@fetch_status <> 0
  BREAK

  EXEC(@sql)
  END

  DEALLOCATE cur

  主要分为读取文件夹下所有文件和导入文件内容两部分
  --读取文件夹下所有文件
  declare @files table (ID int IDENTITY, FileName varchar(100))
  insert into @files execute xp_cmdshell 'dir c:\test /b'
  select 'c:\'+ [FileName] AS FILEPATH INTO #temp from @files
  SELECT * FROM #temp
  --导入文件内容
  BULK INSERT dbo.Table_1
  FROM #temp
  WITH
  (
  ROWTERMINATOR ='\n'
  )

  还需要开启
  /***** Step 1 开启 xp_cmdshell
  Use Master
  GO
  EXEC master.dbo.sp_configure 'show advanced options', 1
  RECONFIGURE WITH OVERRIDE
  GO
  EXEC master.dbo.sp_configure 'xp_cmdshell', 1
  RECONFIGURE WITH OVERRIDE
  GO
  *******/
  参考:
  http://social.msdn.microsoft.com/Forums/sqlserver/en-US/47c8edc1-8cad-4a24-a09a-3fc0c943325c/bulk-insert-multiple-files-tsql
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式