2010-08-19 48 views
0

能否請你幫我用語法批量導入這樣的數據:批量導入到SQL Server表

startIpNum,endIpNum,country,region,city,postalCode,latitude,longitude,dmaCode,areaCode 
1.0.0.0,1.7.255.255,"AU","","","",-27.0000,133.0000,, 
1.9.0.0,1.9.255.255,"MY","","","",2.5000,112.5000,, 
1.10.10.0,1.10.10.255,"AU","","","",-27.0000,133.0000,, 
1.11.0.0,1.11.255.255,"KR","","","",37.0000,127.5000,, 
1.12.0.0,1.15.255.255,"CN","","","",35.0000,105.0000,, 
1.16.0.0,1.19.255.255,"KR","","","",37.0000,127.5000,, 
1.21.0.0,1.21.255.255,"JP","","","",36.0000,138.0000,, 
1.22.0.0,1.23.255.255,"IN","","","",20.0000,77.0000,, 
1.24.0.0,1.31.255.255,"CN","","","",35.0000,105.0000,, 
1.33.0.0,1.33.255.255,"JP","","","",36.0000,138.0000,, 

我使用這個:

set quoted_identifier OFF 
drop table #y 
drop table #x 
DECLARE @servername varchar(128), 
@DatabaseName varchar(128), @filepath varchar(500), @pattern varchar(100), 
@TableName varchar(128),@query varchar(1000),@max1 int,@count1 int,@filename varchar(100),@fieldTerminator VARCHAR(100),@RowTerminator VARCHAR(100) 

SELECT @servername ='SQL', 
@DatabaseName ='Test', 
@filepath ='C:\test', 
    @pattern ='*.*', 
@TableName ='WeeklyImport' 
,@fieldTerminator='''","''' 
,@RowTerminator='''"\n"''' 
set @count1 =0 
create table #x (name varchar(200)) 
set @query ='master.dbo.xp_cmdshell "dir '[email protected][email protected] +' /b"' 
insert #x exec (@query) 
delete from #x where name is NULL 
select identity(int,1,1) as ID, name into #y from #x 
drop table #x 
set @max1 = (select max(ID) from #y) 
--print @max1 
--print @count1 
While @count1 <= @max1 
begin 
set @[email protected]+1 
set @filename = (select name from #y where [id] = @count1) 
set @Query ='BULK INSERT '+ @Tablename + ' FROM "'+ @[email protected]+'" 
       WITH (FIELDTERMINATOR = ' [email protected] + ',ROWTERMINATOR = ' + @rowterminator + ')' 
print @query 
exec (@query) 
end 

drop table #y 
+0

你可以給你的腳本添加一些描述和/或評論,這樣我們就可以知道你在做什麼/爲什麼。另外,指出哪些部分不起作用。 – 2010-08-19 18:06:54

回答

0

你有訪問SQL導入/在SQL Server中導出工具?

alt text

對於我來說,這是在"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSWizard.exe"。還有其他關於此頁左右,包括Questions about exporting and importing flatfiles (txt, csv) in SQL Server 2005

+0

我將需要使用BulkImport進程執行此操作。 我知道使用SSIS很容易,但不幸的是我不能在這個項目中使用它。 – sharadov 2010-08-19 17:47:04

0

我嘗試過了下列格式文件...

alt text

...對您的CSV文件的第一個3列:

alt text

查詢雲如下:

alt text

您現在只需要添加所有其他列並在格式文件內指定它們的格式。如果需要在插入它們之前修改某些值,則可以使用REPLACE函數。

+0

我能得到他們就好使用此: BULK INSERT mnIPBlocker.dbo.GeoIPCity_stage FROM 'd:\測試\ Sample_Geo.csv' WITH(FIELDTERMINATOR = '',ROWTERMINATOR = '\ n') 只需要知道如何擺脫國家,地區,城市,郵政編碼列的雙引號 – sharadov 2010-08-19 18:26:13

+0

對不起,我以爲你沒有那部分工作。我想對導入的數據運行更新查詢來刪除雙引號不是一個選項,對吧? – jdecuyper 2010-08-19 18:52:56

+0

您是否已經嘗試創建格式文件來描述插入的數據? http://msdn.microsoft.com/en-us/library/ms178129.aspx – jdecuyper 2010-08-19 19:04:32