SQL 导入 10000 多个 .csv 文件
SQL import 10000+ .csv files
不幸的是,我的存储出现问题,被迫重新获取数据。但是,它出现在许多 .csv
文件中,并且不知道如何在不一个一个导入的情况下将它们全部导入。我想将 10000+ .csv
个文件合并到一个 table 中,并希望帮助一次对所有导入进行编码。
所有文件都具有相同的架构:
'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
)
此时我不知道如何生成一个循环来查看 "Investment Data" 文件夹中的所有文件;下面的示例是一个 .csv 文件的示例代码。如果有比"bulk insert"更好的方法那么我会修改下面的语句。
bulk insert [investment data 1].dbo.AA
from 'R:\Investment Data\NASDAQ_20090626.csv'
with
(
firstrow=2
,rowterminator = '\n'
,fieldterminator = ','
)
感谢任何帮助;如果我能更清楚,请告诉我。感谢您的宝贵时间。
您(为那个文件)编写的内容有效吗?
太棒了。
- 打开一个dos提示符
- 导航到包含 10,000 个文件的文件夹
输入DIR /b >c:\temp\files.txt
现在安装一个不错的文本编辑器,比如 Notepad++(这些说明适用于 notepad++)
在该编辑器中打开 c:\temp\files.txt
打开 find/replace 对话框,在 "Extended (\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
中粘贴并 运行
不幸的是,我的存储出现问题,被迫重新获取数据。但是,它出现在许多 .csv
文件中,并且不知道如何在不一个一个导入的情况下将它们全部导入。我想将 10000+ .csv
个文件合并到一个 table 中,并希望帮助一次对所有导入进行编码。
所有文件都具有相同的架构:
'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
)
此时我不知道如何生成一个循环来查看 "Investment Data" 文件夹中的所有文件;下面的示例是一个 .csv 文件的示例代码。如果有比"bulk insert"更好的方法那么我会修改下面的语句。
bulk insert [investment data 1].dbo.AA
from 'R:\Investment Data\NASDAQ_20090626.csv'
with
(
firstrow=2
,rowterminator = '\n'
,fieldterminator = ','
)
感谢任何帮助;如果我能更清楚,请告诉我。感谢您的宝贵时间。
您(为那个文件)编写的内容有效吗?
太棒了。
- 打开一个dos提示符
- 导航到包含 10,000 个文件的文件夹
输入
DIR /b >c:\temp\files.txt
现在安装一个不错的文本编辑器,比如 Notepad++(这些说明适用于 notepad++)
在该编辑器中打开 c:\temp\files.txt
打开 find/replace 对话框,在 "Extended (\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
中粘贴并 运行