ФАЙЛ ЗАГРУЗКИ ДАННЫХ импортирует не все строки в источнике данных CSV

#mysql #sql #database #csv #load-data-infile

#mysql #sql #База данных #csv #load-data-infile

Вопрос:

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

Данные поступают из государственного источника и очень странно отформатированы с использованием одинарных кавычек и т.д. В необычных местах. Вот пример записи, которая не вставляется:

 "'050441'","STANFORD HOSPITAL","CA","H_HSP_RATING_7_8","How do patients rate the hospital overall?","Patients who gave a rating of'7' or '8' (medium)","22","300 or more","37",""
  

Однако эта запись вставляется:

 "'050441'","STANFORD HOSPITAL","CA","H_HSP_RATING_0_6","How do patients rate the hospital overall?","Patients who gave a rating of '6' or lower (low)","8","300 or more","37",""
  

SQL, который я использую для загрузки данных, находится здесь:

 mysql> load data infile "c:\HQI_HOSP_HCAHPS_MSR.csv" into table hospital_qualit
y_scores fields terminated by "," enclosed by '"' lines terminated by "n" IGNOR
E 1 LINES;
  

Формат таблицы, в которую я загружаю данные, следующий:

разделитель $$

 CREATE TABLE `hospital_quality_scores` (
  `ProviderNumber` varchar(8) NOT NULL,
  `HospitalName` varchar(50) DEFAULT NULL,
  `State` varchar(2) DEFAULT NULL,
  `MeasureCode` varchar(25) NOT NULL,
  `Question` longtext,
  `AnswerDescription` longtext,
  `AnswerPercent` int(11) DEFAULT NULL,
  `NumberofCompletedSurveys` varchar(50) DEFAULT NULL,
  `SurveyResponseRatePercent` varchar(50) DEFAULT NULL,
  `Footnote` longtext,
  PRIMARY KEY (`ProviderNumber`,`MeasureCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
  

У кого-нибудь есть идеи, почему это происходит? Кажется, что только одна из записей фактически вставляется правильно.

Ответ №1:

Может быть, ваш первичный ключ предотвращает вставку дополнительных данных?

Найдите вставленную запись с номером поставщика «‘050441′» и кодом измерения «H_HSP_RATING_7_8», если у вас есть один из них, то это проблема с дубликатом ключа.

Возможно, вам потребуется добавить «AnswerDescription» к первичному ключу, чтобы обойти эту проблему.

С уважением,

Дэйв

Ответ №2:

На самом деле я думаю, возможно, ваша проблема больше связана с тем, что первое значение заключено в двойные кавычки (т. Е. оно заключено в кавычки дважды, как в «‘value'»), что, вероятно, приводит к тому, что значение, которое вы пытаетесь вставить, равно ‘050441’, а не 050441, как должно быть.

В любом случае, без специальной обработки вы собираетесь вставить дополнительные одинарные кавычки, которые, я думаю, вы, вероятно, не собирались делать.

Удачи и пусть весь ваш код работает безупречно!

Родни