很不幸,我的存储出现问题,被迫重新获取数据。但是,这出现在许多.csv
文件中,并且不知道如何不逐个导入所有文件。我想将10000+个.csv
文件放入一个表中,并希望对所有导入进行一次编码。
所有文件都具有相同的架构:
'Symbol' (varchar(15))
'Date' (Date)
'Open' (Float)
'High' (Float)
'Low' (Float)
'Close' (Float)
'Volume' (Int)
也:所有文件的命名结构都相同:
XXXXXX_YYYYMMDD
(XXXXXX是市场的名称;我有7个唯一的名称)
Create Table [investment data 1].dbo.AA
(
Symbol varchar(15),
[Date] Date,
[Open] Float,
High Float,
Low Float,
[Close] Float,
Volume Int
)
这时,我不知道如何生成一个循环,该循环将查看“投资数据”文件夹中的所有文件。下面的示例是一个.csv文件的示例代码。如果有比“批量插入”更好的方法,那么我将修改下面的语句。
bulk insert [investment data 1].dbo.AA
from 'R:\Investment Data\NASDAQ_20090626.csv'
with
(
firstrow=2
,rowterminator = '\n'
,fieldterminator = ','
)
感谢您的帮助;如果我能说得更清楚,请告诉我。感谢您的宝贵时间。
答案 0 :(得分:2)
您为该文件编写的内容行得通吗?
太好了。
类型DIR /b >c:\temp\files.txt
现在安装一个不错的文本编辑器,例如Notepad ++(这些说明适用于notepad ++)
在该编辑器中打开c:\ temp \ files.txt
打开“查找/替换”对话框,在“扩展(\ n,\ r ...“)旁边打勾-这使其与换行符匹配,并支持替换中的换行符
将其放在“查找”中:\r\n
将此内容替换为' with(firstrow=2,rowterminator = '\\n',fieldterminator = ',');\r\nbulk insert [investment data 1].dbo.AA from 'R:\Investment Data\
这将使您的文件列表看起来像这样:
a.txt
b.txt
c.txt
d.txt
看起来像这样:
a.txt' with(firstrow=2,rowterminator = '\n',fieldterminator = ',')
bulk insert [investment data 1].dbo.AA from 'R:\Investment Data\b.txt' with(firstrow=2,rowterminator = '\n',fieldterminator = ',');
bulk insert [investment data 1].dbo.AA from 'R:\Investment Data\c.txt' with(firstrow=2,rowterminator = '\n',fieldterminator = ',');
bulk insert [investment data 1].dbo.AA from 'R:\Investment Data\d.txt' with(firstrow=2,rowterminator = '\n',fieldterminator = ',');
bulk insert [investment data 1].dbo.AA from 'R:\Investment Data\
现在只需清理第一行和最后一行,这是一个适当的SQL。粘贴并在SSMS中运行