我還是習慣了SQL,所以在開始使用存儲過程之前,我想先了解如何有效地使用BULK INSERT。如何使用附加列顯示文件名進行BULK INSERT?
我需要合併50個csv文件並將它們轉儲到SQL表中。問題是,我希望能夠區分每個記錄(如每個記錄屬於某個csv文件,我將通過文件名識別)。
這裏有我想要的一個小例子:
CREATE TABLE ResultsDump
(
PC FLOAT,
Amp VARCHAR(50),
RCS VARCHAR(50),
CW VARCHAR(50),
State0 VARCHAR(50),
State1 VARCHAR(50),
)
BULK INSERT ResultsDump
FROM 'c:\distance1000_7_13_2010_1_13PM_Avery DennisonAD_2300008_10S_Lock.csv'
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
BULK INSERT ResultsDump
FROM 'c:\distance1000_7_13_2010_2_27PM_Avery DennisonAD_2300009_10S_Lock.csv'
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
BULK INSERT ResultsDump
FROM 'C:\distance1000_7_13_2010_2_58PM_Avery DennisonAD_230000A_10S_Lock.csv'
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
BULK INSERT ResultsDump
FROM 'c:\distance1000_7_13_2010_3_21PM_Avery DennisonAD_230000B_10S_Lock.csv'
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
BULK INSERT ResultsDump
FROM 'c:\distance1000_7_13_2010_3_41PM_Avery DennisonAD_230000C_10S_Lock.csv'
WITH
(
FIRSTROW = 2,
MAXERRORS = 0,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
我知道這是做事情的方式效率極低,但我絕對想弄清楚如何手工轉儲一個文件中的SQL表中格式我想在開始創建存儲過程之前。
在新表,我想是這樣的:
FileName,PC,Amp,RCS,CW,State0,State1
c:\distance1000_7_13_2010_1_13PM_Avery DennisonAD_2300008_10S_Lock.csv, ...
...
...
c:\distance1000_7_13_2010_2_27PM_Avery DennisonAD_2300009_10S_Lock.csv, ...
...
...
c:\distance1000_7_13_2010_2_58PM_Avery DennisonAD_230000A_10S_Lock.csv, ...
...
...
任何簡單的建議或推薦特定的功能將是巨大的!請記住,我已經習慣了SQL,如果我可以一次完成這一步,那將是非常棒的,這就是爲什麼我要從這樣一個簡單的問題開始。
提前致謝!
BULK INSERT是不是一個標準的SQL語句。用正確的DBMS標記這將是明智的 - 我懷疑MS SQL Server,但我不確定。 – 2010-08-23 03:20:42
正式注意。謝謝你的糾正。 – 2010-08-23 03:32:08