我正在开发一个备份数据库表并将其数据存储为CSV的应用程序。当我想将表还原到数据库时,我使用了一个'模型'表根据模型创建现有表。 然而,这些表有多种结构,我想生成表格' '创建'脚本并将其保存在某处以便恢复。 反正有吗?我只对通过编码而不是sql脚本执行此操作感兴趣,因为我们同时使用SQL Server和Oracle,并且此过程将自动执行超过3000个表。
在下面的代码中,我根据表模型创建表:
If ProductData.Tables(0).Rows(0).Item(0) = 0 Then 'Does not exist
'Create table based on a model
Dim sqlCopyFromModel As New SqlCommand("SELECT TOP 0 * INTO " & sFileName & " FROM s_20130702;", con)
con.Open()
Dim i As Integer = sqlCopyFromModel.ExecuteNonQuery()
con.Close()
'Enter data from CSV file
Dim sqlInsertDataFromCSV As New SqlCommand("BULK INSERT " & sFileName & " FROM '" & txtFilePath.Text.Trim & "' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW=2 )", con)
con.Open()
sqlInsertDataFromCSV.ExecuteNonQuery()
con.Close()
MsgBox("success")
答案 0 :(得分:1)
在Oracle中,您可以使用内置包DBMS_METADATA,其中函数GET_DDL可以为您提供创建表所需的DDL(“创建脚本”)。
http://docs.oracle.com/database/121/ARPLS/d_metada.htm#ARPLS66885
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT')
FROM DUAL;
(如果您尝试做一些与数据库无关且在SQL Server和Oracle上都能运行的东西,那么最好不要使用“TOP 0”; - )