生成数据库表' CREATE脚本

时间:2014-08-12 14:11:32

标签: sql-server vb.net oracle csv

我正在开发一个备份数据库表并将其数据存储为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")

1 个答案:

答案 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”; - )