SQL импорт 10000+ .csv файлов - PullRequest
       15

SQL импорт 10000+ .csv файлов

0 голосов
/ 16 сентября 2018

К сожалению, у меня были проблемы с моим хранилищем, и я был вынужден повторно получить данные. Однако, это произошло во многих .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 = ','
)

Любая помощь приветствуется; если я могу быть более ясным, пожалуйста, дайте мне знать. Спасибо за ваше время.

1 Ответ

0 голосов
/ 16 сентября 2018

Работает ли то, что вы написали (для этого одного файла)?

Отлично.

  • Открыть подсказку для доса
  • Перейдите в папку с вашими 10 000 файлов
  • тип DIR /b >c:\temp\files.txt

  • Теперь установите достойный текстовый редактор, такой как Notepad ++ (эти инструкции предназначены для notepad ++)

  • Откройте c: \ temp \ files.txt в этом редакторе

  • Откройте диалоговое окно поиска / замены, поставьте галочку рядом с надписью «Extended (\ n, \ r ...») - это позволяет сопоставлять новые строки и поддерживает новые строки в заменах

  • Поместите это в 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

...