Я преобразовал сложный XML-файл в набор данных, который содержит 7 таблиц и около 70 столбцов. Я создал таблицы в SQL Server, чтобы они соответствовали тем в наборе данных, используя XML-схему. Как я могу легко написать свой набор данных в таблицы SQL?Write Dataset to SQL Table
ответ
Если вы используете .NET 3/3.5, вы можете посмотреть в LINQ.
Возможно, вы захотите посмотреть DataAdapters и TypedDatasets.
Все они доступны через конструктор VS, просто создайте набор данных и удалите таблицы SQL из представления проводника сервера. :) (или что-то подобное, это было в то время)
В зависимости от того, сколько строк у вас есть в DataSet, вероятно, лучше всего сделать было бы использовать SqlCommandBuilder, например, так:
var connection = new SqlConnection("my connection string");
connection.Open();
// repeat for each table in data set
var adapterForTable1 = new SqlDataAdapter("select * from table1", connection);
var builderForTable1 = new SqlCommandBuilder(adapterForTable1);
adapterForTable1.Update(myDataSet, "Table1");
Если у вас есть сложные отношения между таблицами в DataSet, я боюсь, что вы не можете использовать SqlCommandBuilder. Вместо этого вам нужно будет определить адаптер данных для каждой таблицы в вашем DataSet. Затем обновите таблицы в DataSet в порядке зависимости (т. Е. Сначала сделайте таблицы без зависимостей, затем зависимые таблицы).
Вот пример родительской/дочерней вставки (обратите внимание, что вы будете делать похожие вещи для обновлений). Таблица 1 является родительской и имеет ParentId (столбец идентичности) и поле NVARCHAR ParentValue. Таблица 2 является дочерней, имеет свой собственный столбец идентификаторов (ChildId), поле внешнего ключа (ParentId) и его собственное значение (ChildValue).
var myDataSet = new DataSet();
// ** details of populating the dataset omitted **
// create a foreign key relationship between Table1 and Table2.
// add a constraint to Table2's ParentId column, indicating it must
// existing in Table1.
var fk = new ForeignKeyConstraint("fk", myDataSet.Tables["Table1"].Columns["ParentId"], myDataSet.Tables["Table2"].Columns["ParentId"])
{
DeleteRule = Rule.Cascade,
UpdateRule = Rule.Cascade
};
myDataSet.Tables["Table2"].Constraints.Add(fk);
myDataSet.EnforceConstraints = true;
var connection = new SqlConnection("my connection string");
var adapterForTable1 = new SqlDataAdapter();
adapterForTable1.InsertCommand =
new SqlCommand("INSERT INTO MasterTable (ParentValue) VALUES (@ParentValue); SELECT SCOPE_IDENTITY() AS ParentId", connection);
adapterForTable1.InsertCommand.Parameters.Add("@ParentValue", SqlDbType.NVarChar).SourceColumn = "ParentValue";
var adapterForTable2 = new SqlDataAdapter();
adapterForTable2.InsertCommand =
new SqlCommand("INSERT INTO ChildTable (ParentId, ChildValue) VALUES (@ParentId, @ChildValue); SELECT SCOPE_IDENTITY() AS ChildId", connection);
adapterForTable2.InsertCommand.Parameters.Add("@ParentId", SqlDbType.Int).SourceColumn = "ParentId";
adapterForTable2.InsertCommand.Parameters.Add("@ChildValue", SqlDbType.NVarChar).SourceColumn = "ChildValue";
connection.Open();
adapterForTable1.Update(myDataSet, "Table1"); // insert rows in parent first
adapterForTable2.Update(myDataSet, "Table2"); // child second
Если DataTables и SQL таблицы выстраиваются в очередь, а затем быстрый способ SqlBulkCopy.
- 1. Oracle Table to SAS Dataset
- 2. Selenium write table to CSV file
- 3. JSON to SQL Table
- 4. SQL Table to C#
- 5. Структура данных DataSet to SQL?
- 6. Linq to SQL или Linq to DataSet?
- 7. SQL Server «Write Once» Table Clustered Index
- 8. Sql Table Does not Map to Datagrid
- 9. ActiveReports multi table dataset
- 10. Flink: write to dev/null
- 11. xml to table в SQL
- 12. LINQ to SQL Table Dependency
- 13. Linq to SQL create table
- 14. Numpy Array to SQL Table
- 15. IQueryable to DataSet
- 16. Случайный LINQ to DataSet
- 17. linq to dataset эквивалент предложения SQL LIKE
- 18. Typed DataSet против Linq to SQL
- 19. LINQ to Dataset - эквивалент sql (где ... in ...)
- 20. LINQ to Object to DataSet
- 21. Write Hive Table, используя Spark SQL и JDBC
- 22. Write StringIO to Tempfile
- 23. Javascript Write to Textfile
- 24. Write jump to memory
- 25. Write Log4J to jTextArea
- 26. Write to Standard-Error
- 27. ElementTree Write to XML
- 28. Maven write to stdout
- 29. Array write to CSV
- 30. Write to Node.js socket
LINQ (то есть LINQ-to-SQL или Entity Framework) не очень поможет в наборе данных ... –
Ударьте меня на него Marc – johnc