Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 加载不存在数据的最佳实践_Sql_Sql Server 2008 - Fatal编程技术网

Sql 加载不存在数据的最佳实践

Sql 加载不存在数据的最佳实践,sql,sql-server-2008,Sql,Sql Server 2008,我试图在MS SQL 2008中构建一个表,其中加载了大约50000行数据。现在我正在做一些类似的事情: Create Table MyCustomData ( ColumnKey Int Null, Column1 NVarChar(100) Null, Column2 NVarChar(100) Null Primary Key Clustered ( ColumnKey ASC ) WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = O

我试图在MS SQL 2008中构建一个表,其中加载了大约50000行数据。现在我正在做一些类似的事情:

Create Table MyCustomData
(
ColumnKey Int Null,
Column1 NVarChar(100) Null,
Column2 NVarChar(100) Null

Primary Key Clustered
(
ColumnKey ASC
)
WITH (
PAD_INDEX  = OFF, 
STATISTICS_NORECOMPUTE  = OFF, 
IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS  = ON, 
ALLOW_PAGE_LOCKS  = ON
)
)

CREATE INDEX IDX_COLUMN1 ON MyCustomData([COLUMN1])
CREATE INDEX IDX_COLUMN2 ON MyCustomData([COLUMN2])

DECLARE @MyCount Int

SET @MyCount = 0

WHILE @MyCount < 50000
BEGIN
 INSERT INTO MyCustomData
 (ColumnKey, Column1, Column2)
 Select @MyCount + 1, 'Custom Data 1', 'Custom Data 2'

Set @MyCount = @MyCount + 1
END
我知道这是行不通的,但这是我唯一能展示的东西,似乎能为我的追求提供一个例子。如有任何建议,我们将不胜感激。

一些用于测试的样本数据集


另一种选择是使用您选择的语言在csv文件中创建数据,然后将其导入SQL Server,这将比您当前的方法快得多。

好吧,如果我想要50000行常量数据和计数器,我会选择

select row_number() over(order by t1.[number]), 'Custom data 1', 'Custom data 2'
from
  master..spt_values as t1
  cross join (select [number] from master..spt_values where [type] = 'P' and [number] between 1 and 50) as t2
where
  [type] = 'P' and t1.[number] between 1 and 1000

@Aizotu:您想让50000行具有相同的数据
('Custom data 1','Custom data 2')
?我想他想有一些“假数据”用于测试。@Tim:我也这么想,但脚本没有显示任何迹象。@ypercube:标题有一个符号:“不存在的数据”@Aizotu-你的速度慢的一部分可能是你正在插入3个索引…在插入完成之前不要添加非聚集索引。我非常喜欢这个!我需要确保在每个客户站点上,运行此T-SQL的应用程序都可以访问主数据库和spt_值表。谢谢
select row_number() over(order by t1.[number]), 'Custom data 1', 'Custom data 2'
from
  master..spt_values as t1
  cross join (select [number] from master..spt_values where [type] = 'P' and [number] between 1 and 50) as t2
where
  [type] = 'P' and t1.[number] between 1 and 1000