我还是习惯了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