загружаются большие таблицы учеников, но школа указана только в первой строке - PullRequest
1 голос
/ 11 июля 2010

Я загружаю большой текстовый файл старшеклассников в MySQL, но сама школа указывается только в первой строке каждого текстового файла. Вот так:

897781234Metropolitan High                   
340098 1001X  678 AS     Reading               101KAS DOE      KEITH   A1 340089 A 7782...

Используя код SQL, как я могу сгенерировать столбец номера школы (например, 897781234) в первом столбце таблицы получения, чтобы школа была идентифицирована с каждой строкой?

Для загрузки текстовых файлов я использую:

LOAD DATA INFILE "f:/school_files/school897781234.txt" 
INTO TABLE my_table FIELDS TERMINATED BY ''
IGNORE 1 LINES;

Спасибо!

1 Ответ

0 голосов
/ 12 июля 2010

Хммм ... похоже, вы делаете это под Windows.Я предпочитаю Unix / Linux для больших текстовых манипуляций, но вы должны иметь возможность использовать аналогичные методы под Windows (попробуйте установить Cygwin ).PowerShell также имеет некоторые полезные возможности, если вы знакомы с этим.Имея это в виду, вот несколько идей для вас:

  1. Напишите скрипт, который будет изменять ваши файлы данных, чтобы сделать их дружественными к MySQL, создавая новый файл, содержащий содержимое всехно первая строка с информацией о школе в начале каждой строки.Загрузите данные из файла.

    (munge-schools.sh)
    #!/bin/bash
    ifile=$1
    ofile=$2
    school=$(head -1 ${ifile})
    tail --lines=+2 ${ifile} | sed "s/^/${school}/" > ${ofile}
    
    ./munge-schools school897781234.txt school897781234.munged
    
  2. Для каждой школы выполните загрузку как есть (пропуская первую строку), но загрузите ее во временную таблицу, затем добавьтестолбец для школы по умолчанию для школьной информации.Скопируйте из временной таблицы в вашу финальную таблицу.

При выборе, я всегда буду делать текстовые манипуляции вне базы данных, чтобы сделать входные файлы более дружелюбными - есть множество инструментов для работы с текстом, которые будут гораздо быстрее переформатировать ваши данные, чем инструменты для массовой загрузки вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...