Точка с запятой должна быть в последней двойной кавычке с закрытием paren. При добавлении одинарных кавычек вокруг строки не забудьте добавлять их вне выбранной ячейки.
(пробелы, добавленные для видимости - удаляют прежде, чем вставить)
=CONCATENATE("insert into table (id, name) values (",C2,",' ",D2," ');")
Вот другое представление:
=CONCATENATE("insert into table (id, date, price) values (",C3,",'",D3,"',",B3,");")
Почему Вы генерируете SQL в Excel? Это легче и намного быстрее, чтобы экспортировать рабочий лист как файл CSV и затем использовать некоторый инструмент для импорта того файла в базу данных SQL. Например, оператор MySQL LOAD DATA INFILE
.
Извинения за то, что не был отвечен на Ваш вопрос непосредственно, и я знаю, что это не решение для всех обстоятельств.
Я делал это вчера, и да, это является раздражающим для разбираний в кавычках. Одна вещь, которую я сделал, была, имеют именованную ячейку, которая просто содержала одинарную кавычку. Введите в A1 ="'"
(равняется, двойной кавычке, одинарная кавычка, двойная кавычка), и затем назовите эту ячейку "КАВЫЧКОЙ" путем ввода этого в поле слева от самой низкой панели инструментов.
Иногда, создание SQL Вставляет, это, кажется, самый легкий путь. Но Вы устаете от него быстро, и я не думаю, что существуют "умные" способы сделать это (кроме, возможно, macros/VBA программирующий).
я указал бы на Вас, чтобы избежать Excel и исследовать некоторые другие идеи:
Экспорт файла Excel в формате csv может быть альтернативным вариантом (см. Сообщение Билла Кравина - как новый постер, я пока не могу добавить комментарий). Однако имейте в виду, что вам, вероятно, придется изменить форматирование полей даты на гггг-мм-дд, иначе все столбцы даты будут показывать 00/00/00 - это потому, что MySQL использует другой формат даты, чем Microsoft Excel. В качестве альтернативы используйте OpenOffice для сохранения файла csv.
Как насчет запроса и вставки данных из книги Excel в источник с помощью ACE / Jet (также известного как Access) SQL? Для этого требуется ACE / Jet, которая может быть другой таблицей Excel. Вот краткий пример:
INSERT INTO
[ODBC;Driver={SQL Server};SERVER=MYSERVER;DATABASE=MyDatabase;UID=sa;Pwd=mypassword;].MyTable (ID, Name)
SELECT F1, F2
FROM
[Excel 8.0;HDR=NO;IMEX=1;Database=C:\db.xls;].[Sheet1$A1:B4];
Иногда я использую подстановку для замены шаблонов в команде SQL вместо того, чтобы пытаться построить команду sql из конкатенации. Скажем, данные находятся в столбцах A и B. Вставьте верхнюю строку. В ячейку C1 поместите команду SQL с использованием шаблона:
insert into table t1 values('<<A>>', '<<B>>')
Затем в строках 2 поместите формулу excel:
=SUBSTITUTE(SUBSTITUTE($C$1, "<<A>>", A2), "<<B>>", B2)
Обратите внимание на использование абсолютной адресации ячеек $ C $ 1
для получения шаблона. Особенно удобно при работе с char или varchar и необходимости смешивать одинарные и двойные кавычки в конкатенации. Сравните с:
=concatenate("insert into table t1 values '", A2, "', '", B2, "')"
Другая вещь, которая укусила меня не один раз, - это попытка использовать excel для обработки некоторых символов или varchars, которые являются числовыми, за исключением того, что у них есть ведущие нули, такие как 007. Excel преобразует в число 7.
Я использовал метод конкатенации строк для создания вставок SQL в Excel. Он может работать хорошо, но также может занимать немного времени и «неудобно».
Я создал надстройку Excel, которая упрощает создание вставок из Excel:
(см. Видео внизу страницы) http://www.howinexcel.com/2009/06/generating-sql-insert-statements-in-excel.html