У меня есть большой рабочий лист Excel, который я хочу добавить в свою базу данных.
Могу ли я сгенерировать сценарий вставки SQL из этого листа Excel?
У меня есть большой рабочий лист Excel, который я хочу добавить в свою базу данных.
Могу ли я сгенерировать сценарий вставки SQL из этого листа Excel?
Ответы:
Я думаю, что импорт с использованием одного из упомянутых методов идеален, если это действительно большой файл, но вы можете использовать Excel для создания операторов вставки:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
В MS SQL вы можете использовать:
SET NOCOUNT ON
Отказаться от отображения всех комментариев "затронуты 1 строка". И если вы делаете много строк и выдает ошибки, время от времени помещайте GO между операторами
=CONCATENATE()
но использование &
знака улучшает читаемость!
&
когда CONCATENATE()
некоторое время назад натолкнулся на ограничение параметра , это не обычная проблема, теперь, когда ограничение составляет 255 параметров, но я никогда не думаю о возврате.
Есть удобный инструмент, который экономит много времени на
http://tools.perceptus.ca/text-wiz.php?ops=7
Вам просто нужно ввести имя таблицы, имена полей и данные - разделить табуляцию и нажать Go!
Вы можете создать соответствующую таблицу через интерфейс Management Studio и вставить данные в таблицу, как показано ниже. Это может занять некоторое время, в зависимости от объема данных, но это очень удобно.
Вы можете использовать следующий оператор Excel:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Это улучшает ответ Hart CO, поскольку он учитывает имена столбцов и избавляется от ошибок компиляции из-за кавычек в столбце. Последний столбец представляет собой пример столбца с числовым значением без кавычек.
В зависимости от базы данных вы можете экспортировать в CSV, а затем использовать метод импорта.
MySQL - http://dev.mysql.com/doc/refman/5.1/en/load-data.html
PostgreSQL - http://www.postgresql.org/docs/8.2/static/sql-copy.html
Вот еще один инструмент, который очень хорошо работает ...
http://www.convertcsv.com/csv-to-sql.htm
Он может принимать значения, разделенные табуляцией, и генерировать сценарий INSERT. Просто скопируйте и вставьте и в параметрах шага 2 установите флажок «Первая строка - это имена столбцов».
Затем прокрутите вниз и шаге 3 введите имя своей таблицы в поле «Schema.Table or View Name:»
Обратите внимание на флажки для удаления и создания таблицы и убедитесь, что вы проверили созданный сценарий перед его запуском.
Это самый быстрый и надежный способ, который я нашел.
Используйте ConvertFrom-ExcelToSQLInsert
из ImportExcel в галерее PowerShell
NAME
ConvertFrom-ExcelToSQLInsert
SYNTAX
ConvertFrom-ExcelToSQLInsert [-TableName] <Object> [-Path] <Object>
[[-WorkSheetname] <Object>] [[-HeaderRow] <int>]
[[-Header] <string[]>] [-NoHeader] [-DataOnly] [<CommonParameters>]
PARAMETERS
-DataOnly
-Header <string[]>
-HeaderRow <int>
-NoHeader
-Path <Object>
-TableName <Object>
-WorkSheetname <Object>
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
ALIASES
None
REMARKS
None
Вот ссылка на онлайн-автомат для преобразования файлов CSV в операторы SQL Insert Into:
Этот запрос, который я создал для вставки данных файла Excel в базу данных. В этом идентификаторе и цене также есть числовые значения и поле даты. Этот запрос суммировал все типы, которые мне нужны. Он также может быть полезен вам.
="insert into product (product_id,name,date,price) values("&A1&",'" &B1& "','" &C1& "'," &D1& ");"
Id Name Date price
7 Product 7 2017-01-05 15:28:37 200
8 Product 8 2017-01-05 15:28:37 40
9 Product 9 2017-01-05 15:32:31 500
10 Product 10 2017-01-05 15:32:31 30
11 Product 11 2017-01-05 15:32:31 99
12 Product 12 2017-01-05 15:32:31 25
Вы можете использовать приведенный ниже метод C # для создания сценариев вставки с помощью листа Excel, просто вам нужно импортировать пакет OfficeOpenXml из диспетчера пакетов NuGet перед выполнением метода.
public string GenerateSQLInsertScripts() {
var outputQuery = new StringBuilder();
var tableName = "Your Table Name";
if (file != null)
{
var filePath = @"D:\FileName.xsls";
using (OfficeOpenXml.ExcelPackage xlPackage = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath)))
{
var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select the first sheet here
var totalRows = myWorksheet.Dimension.End.Row;
var totalColumns = myWorksheet.Dimension.End.Column;
var columns = new StringBuilder(); //this is your columns
var columnRows = myWorksheet.Cells[1, 1, 1, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
columns.Append("INSERT INTO["+ tableName +"] (");
foreach (var colrow in columnRows)
{
columns.Append("[");
columns.Append(colrow);
columns.Append("]");
columns.Append(",");
}
columns.Length--;
columns.Append(") VALUES (");
for (int rowNum = 2; rowNum <= totalRows; rowNum++) //selet starting row here
{
var dataRows = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
var finalQuery = new StringBuilder();
finalQuery.Append(columns);
foreach (var dataRow in dataRows)
{
finalQuery.Append("'");
finalQuery.Append(dataRow);
finalQuery.Append("'");
finalQuery.Append(",");
}
finalQuery.Length--;
finalQuery.Append(");");
outputQuery.Append(finalQuery);
}
}
}
return outputQuery.ToString();}
Мне приходилось часто создавать сценарии SQL, добавлять их в систему управления версиями и отправлять их администратору баз данных. Я использовал это приложение ExcelIntoSQL из магазина Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM. Оно создает полный сценарий с «СОЗДАТЬ ТАБЛИЦУ» и ВСТАВКИ.
У меня есть надежный способ генерировать SQL-вставки, и вы можете изменять частичные параметры при обработке. Это очень помогает мне в моей работе, например, копирование сотен данных в базу данных с несовместимой структурой и количеством полей. IntellIJ DataGrip - мощный инструмент, который я использую. DG может получать данные из офиса WPS или MS Excel по столбцу или строке. после копирования DG может экспортировать данные в виде вставок SQL .
insert
иupdate
прямо здесь ☺