我有一个奇怪的问题。
DROP table IF EXISTS ipl;
CREATE TABLE ipl(
match_id VARCHAR(50),
batting VARCHAR(50),
bowling VARCHAR(50),
overn VARCHAR(50),
batsman VARCHAR(50),
bowler VARCHAR(50),
super_over VARCHAR(50),
bat_runs VARCHAR(50),
extra_runs VARCHAR(50),
total_runs VARCHAR(50),
player_out VARCHAR(50),
how VARCHAR(50),
fielder VARCHAR(50));
BULK INSERT ipl
FROM 'F:\Study\Semesters\4th
Sem\COL362\HomeWork\1\Dataset\deliveries.csv'
WITH(FIELDTERMINATOR= ',');
SELECT * FROM ipl;
这是我用来在SSMS中制作表格的代码。 match_id在csv文件中按从1到约290的顺序递增。当我执行一次该查询时,一切正常。但是,当我再次这样做时,中间的一些行移到了最后一行。
您可以在下面看到: (请注意,从4跳到49)
我不知道怎么了。请帮助我解决此问题。谢谢!
答案 0 :(得分:1)
SQL表表示无序集。如果要按特定顺序排列行,则需要order by
。如何使用bulk insert
执行此操作?好吧,您需要一个标识列。这个想法是创建一个具有标识的表,并将视图用于批量插入:
create table ipl (
ipl_id int identity(1, 1) primary key,
. . .
);
create view vw_ipl as
select match_id, batting, bowling, . . .
from ipl
bulk insert vw_ipl
from 'F:\Study\Semesters\4th Sem\COL362\HomeWork\1\Dataset\deliveries.csv'
with (fieldterminator= ',' );
select *
from ipl
order by ipl_id;
答案 1 :(得分:0)
作为关系数据库,SQL Server不保证返回数据的特定顺序。如果需要排序的数据,请指定order by子句。