У мене є великий робочий аркуш 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!
Ви можете створити відповідну таблицю через інтерфейс студії управління та вставити дані в таблицю, як показано нижче. Це може зайняти деякий час, залежно від обсягу даних, але це дуже зручно.
Ви можете використовувати наступне твердження 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/uk/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 введіть назву таблиці у поле "Схема. Таблиця або Переглянути ім'я:"
Також зверніть увагу на прапорці для видалення та створення таблиці та переконайтесь, що ви вивчите створений сценарій перед його запуском.
Це найшвидший і найнадійніший спосіб, який я знайшов.
Використовуйте 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 у базу даних. У цьому id та ціні є числові значення та поле дати. Цей запит узагальнив усі типи, які мені потрібні. Він може бути корисним і вам
="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 Package від NuGet Package Manager перед виконанням методу.
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 і додавати їх до джерела управління та надсилати їх до DBA. Я використовував цей додаток ExcelIntoSQL з магазину Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM Він створює повний сценарій із "СТВОРИТИМ ТАБЛИЦЮ" та ВСТАВКАМИ.
У мене є надійний спосіб генерувати вставки SQL, і ви можете змінювати часткові параметри при обробці. Це дуже допомагає мені в моїй роботі, наприклад, копіювати сотні даних у базу даних з несумісною структурою та кількістю полів. IntellIJ DataGrip - потужний інструмент, який я використовую. Генеральний директор може отримувати дані з офісу WPS або MS Excel за стовпцем або рядком. після копіювання DG може експортувати дані у вигляді вставок SQL .
insert
іupdate
прямо тут ☺