SQL import 10000+ .csv文件

问题描述 投票:1回答:1

不幸的是我的存储问题,并被迫重新获取数据。然而,这出现在许多.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 = ','
)

任何帮助表示赞赏;如果我能更清楚,请告诉我。谢谢你的时间。

sql csv import bulk
1个回答
2
投票

你写的(对于那个文件)有用吗?

大。

  • 打开dos提示符
  • 导航到包含10,000个文件的文件夹
  • 键入DIR /b >c:\temp\files.txt
  • 现在安装一个体面的文本编辑器,如Notepad ++(这些说明适用于记事本++)
  • 在该编辑器中打开c:\ temp \ files.txt
  • 打开查找/替换对话框,在“扩展(\ n,\ r \ n ...”)旁边打勾 - 这使其与换行符匹配,并支持替换中的换行符
  • 把它放在Find:\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中运行

© www.soinside.com 2019 - 2024. All rights reserved.