MySQL ошибки экспорта при пустых полях. Как избежать?

199
24 апреля 2017, 02:59

Делал исходя из написанного в документации, получилось так:

DELETE FROM table_name;
SET NAMES 'utf8';
SET CHARACTER SET utf8;
LOAD DATA INFILE 'c:/backups/file_from_bd.csv' INTO TABLE table_name FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\\n';

Сам запрос рабочий. Но вот стоило его внедрить в Delphi, то всё, тут же стал выпадать в Syntax Error from MySQL

Скрин ошибки:

Код Delphi:

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('DELETE FROM table_name;');
  ADOQuery1.SQL.Add('SET NAMES ''utf8'';');
  ADOQuery1.SQL.Add('SET CHARACTER SET utf8;');
  ADOQuery1.SQL.Add('LOAD DATA INFILE ''c:/backups/file_from_bd.csv'' INTO TABLE table_name FIELDS TERMINATED BY '';'' ENCLOSED BY ''"'' LINES TERMINATED BY ''\\n'';');
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Clear;
  ADOQuery1.Close;

Если я правильно понимаю, то "ноги" данной ошибки произрастают из-за использования драйвера "mysql connector odbc 5.2.7", который используется для соединением с СУБД mySQL?
Или как решается данный вопрос?
И решается ли он, не прибегая к консольному методу загрузки данных в БД?

Answer 1

Доброго времени суток. В свое время были проблемы в использованием кирилицы при работе с MySql Embedded. Сработал вот такой запрос.

ADOConnection.ExecSQL('SET NAMES cp1251;');

Может быть вам не нужно utf8 обрамлять апострофами?

READ ALSO
Как распарсить ENUM (JDBC, MYSQL, JAVA)?

Как распарсить ENUM (JDBC, MYSQL, JAVA)?

Нужно с DB mysql получить значение типа enumКаким методом resultSet

209
Ошибка - Forge gradle compiller error | Java

Ошибка - Forge gradle compiller error | Java

ЗдравствуйтеЯ собираю свою сборку MC , и мне нужно было внести изменения в мод для баланса

301
ProgressDialog в JavaFX без Worker'а

ProgressDialog в JavaFX без Worker'а

Здравствуйте

230