【问题标题】:BULK INSERT into table and auto-increment批量插入表并自动递增
【发布时间】:2013-04-25 13:38:32
【问题描述】:

我有一个.txt 格式的文件:

123456
111111
122222
123344
121212

我希望将它们与记录它们在.txt 文件中的顺序的整数一起插入到临时表中,例如:

Index    Number
---------------
1        123456
2        111111
3        122222
4        123344
5        121212

目前我正在通过在我的临时表中添加一个IDENTITY 列并使用FORMATFILE 执行BULK INSERT 来执行此操作,如下所示:

CREATE TABLE #tbl
(   
    idx int NOT NULL IDENTITY,
    ItemNumber nchar(6)
)


BULK INSERT #tbl 
FROM 'd:\MyNumberList.txt'
WITH 
(
     FORMATFILE='d:\MyFormatFile.xml'
)

但是,我希望有一种无需FORMATFILE 文件即可实现此目的的方法。

有没有办法做到这一点?

【问题讨论】:

  • 这是为了数据迁移
  • @Luv 这只是一个导入过程。
  • 你可以使用SSIS包。
  • 我看不出您当前的解决方案有什么问题:删除格式文件真的“更简单”了吗?如果您进行大量批量导入,通常会有一个格式文件“库”,可用于各种源文件格式。
  • @Pondlife 拥有格式文件意味着我需要保留对这个脚本的引用,无论该脚本将来放置在不同的服务器上。我宁愿不依赖这个文件。

标签: sql-server sql-server-2008 bulkinsert data-import


【解决方案1】:

您可以使用view 来完成此操作。但是,由于您在此处使用临时表,并且无法在临时表上创建视图,因此您还需要使用同义词。

如果您要导入常规表,则不需要同义词:

create synonym tbl for #tbl
GO

create view vtbl
as
select ItemNumber from tbl
GO

bulk insert vtbl from 'd:\MyNumberList.txt'
GO

select * from #tbl
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多