как вы можете видеть по названию, я хочу знать способ импорта данных из excel в базу данных, хотя я прочитал много вопросов и ответов об этом, я не знаю найдите тот, который решит мою проблему. Так что мой лист excel каждые минуты обновляет его номера (получая новые значения из Интернета и перезаписывая одну и ту же ячейку), поэтому excel нужно всегда открывать. Я хочу прочитать эти значения из visual studio, получить эти значения и записать их в моей базе данных. У меня уже есть работа с OleDb и запись ее на PostgreSql, но она работает только тогда, когда мой excel закрыт (я думаю, что это так, потому что OleDb открывает excel для его чтения, а синтаксис уже открыт, он не работает). Я очень ценю любого, кто мог бы мне помочь ... Спасибо!Импорт данных Excel в базу данных динамически
ответ
... Я хочу, чтобы прочитать эти значения из визуальной студии ...
Почему не VBA, чтобы читать эти значения и записать в Postgres? Вы можете запустить макрос VBA в книге Excel. Например:
Sub Cell2Postgres()
Dim Connection As New ADODB.Connection
Dim Command As New ADODB.Command
Connection.ConnectionString = "Driver=PostgreSQL Unicode;Server=localhost;Port=5432;Database=postgres;Uid=postgres;Pwd=postgres"
Connection.Open
Command.ActiveConnection = Connection
Command.CommandText = "INSERT INTO public.mytable (myfield) VALUES (?)"
Command.Parameters.Append Command.CreateParameter("", adVarChar, adParamInput, 255, Range("A1").Value)
Command.Execute
Connection.Close
End Sub
О, простите! Я имею в виду, что этот автор может использовать VBA для открытого файла в Excel. –
Gotcha. Убрали мой комментарий –
Утвержден, потому что это хорошее предложение, и в то время у человека не хватило репутации, чтобы прокомментировать пост других людей. –
Это некоторый код, который я написал для надстройки, что делает именно то, что - это занимает выделенный диапазон в Excel и автоматически заливаешь таблицу (с помощью C#, VSTO в данном случае).
Этот код прошел через многие МНОГО Итераций и, наконец, мы доволен. Это очень быстро (быстрее, чем любая предыдущая версия, и раньше, чем импорт PgAdmin), и очень прощает типы данных - вам даже не нужно знать тип данных целевой таблицы, если вы отформатируете его таким образом, чтобы Команда PostgresSQL copy
может загрузить его.
В двух словах он принимает диапазон, делает специальные значения для копирования в новую таблицу, сохраняет лист как CSV (Fast, использует собственные функции Excel), сжимает CSV-файл, FTP-файл PostgreSQL, а затем запускает команду copy
.
CAVEAT: Поскольку это copy
, пользователь, который на самом деле выполняет команду, должен быть суперпользователем.
var addIn = Globals.ThisAddIn;
Excel.Range range = addIn.Application.Selection;
Excel.Workbook wb = addIn.Application.Workbooks.Add();
Excel.Worksheet ws = wb.Worksheets[1];
range.Copy();
ws.get_Range("A1").PasteSpecial(Excel.XlPasteType.xlPasteValuesAndNumberFormats);
addIn.Application.DisplayAlerts = false;
wb.SaveAs(Path.Combine(_Outputdir, string.Format("{0}.csv", TableName)),
Excel.XlFileFormat.xlCSV);
wb.Close();
addIn.Application.DisplayAlerts = true;
string newFile = Commons.Compress(_Outputdir, string.Format("{0}.csv", TableName));
Это обычная процедура FTP, которую мы написали. Я не мог заставить библиотеку классов .NET работать. Вы можете делать все, что вы хотите, чтобы получить его на сервер:
Commons.FtpPut(newFile, _Outputdir);
Теперь загрузите данные:
NpgsqlTransaction trans = conn.BeginTransaction(IsolationLevel.RepeatableRead);
if (TruncateTable)
{
cmd = new NpgsqlCommand(string.Format("truncate table {0}", TableName), conn, trans);
cmd.ExecuteNonQuery();
}
try
{
Stopwatch st = new Stopwatch();
st.Start();
string format = HasHeader ? "csv header" : "csv";
cmd.CommandText = string.Format(
"copy {0} from program 'gzip -dc /apps/external_data/inbound/{0}.csv.gz' " +
"with null as '' {1} encoding 'WIN1250'", TableName, format);
cmd.ExecuteNonQuery();
trans.Commit();
st.Stop();
Results = string.Format("Upload Completed in {0}", st.Elapsed);
}
catch (Exception ex)
{
trans.Rollback();
Results = ex.ToString();
success = false;
}
Опять же, рука-ролл свой собственный процесс FTP очистки:
Commons.FtpDelete(newFile, _Outputdir);
Перед этим мы делаем проверки, чтобы убедиться, что у пользователя есть разрешения на усечение и/или загрузку таблицы.
Последнее примечание - этот код не является условным. Он работает в производстве, и пользователи ежедневно выполняют множество загрузок таблиц.
- 1. Импорт Excel в базу данных
- 2. Импорт данных Excel в базу данных Access
- 3. Импорт данных Excel в базу данных
- 4. Импорт данных из Excel в базу данных
- 5. Импорт данных Excel в базу данных mysql
- 6. Импорт данных Excel в базу данных mysql
- 7. Импорт данных из Excel в базу данных
- 8. Импорт файла Excel в базу данных
- 9. Импорт таблицы Excel в базу данных
- 10. Импорт книги Excel в базу данных выполнения
- 11. Импорт данных в базу данных
- 12. Импорт данных Excel в базу данных в codeigniter
- 13. Импорт данных Excel в базу данных в rails
- 14. Импорт данных из Excel в базу данных в Entity Framework
- 15. Импорт данных из Excel в базу данных в C#
- 16. Импорт данных в базу данных MySQL
- 17. Импорт данных максимально динамически
- 18. Импорт данных из Excel в базу данных на основе службы
- 19. Импорт данных из листа Excel в базу данных SQL Server
- 20. Импорт данных из Excel в базу данных с использованием asp.net
- 21. Импорт данных Excel в базу данных MySQL с использованием PHP
- 22. Импорт данных csv-файла в базу данных
- 23. Импорт данных XML в базу данных
- 24. Импорт базы данных в базу данных MySQL
- 25. Импорт текстовых данных в базу данных Greenplum
- 26. Импорт данных в базу данных Realm
- 27. Импорт данных CSV в существующую базу данных
- 28. Импорт данных csv в базу данных Mysql
- 29. Импорт слабо структурированных данных в базу данных
- 30. Импорт csv в базу данных
Посмотрите: http://superuser.com/questions/731723/one-excel-file-multiple-editing-users-live-updates –
У вас уже есть механизм для получения необходимых данных и пишите в Excel. Наверняка, вам нужно добавить строку, чтобы дополнительно добавить Postres? – mlinth
Думая еще немного, я бы написал данные прямо в postgresql и просмотрел данные Postgresql в Excel через ODBC/OLE – mlinth