On Wed, 2006-10-25 at 11:47 -0500, Jarvis Stubblefield wrote:
> I am very sorry if this seems to be a newb question, and on the FAQ's
> or otherwise elsewhere. I couldn't find an answer to my question.
> 
> These INSERT statements work.
> 
> INSERT INTO fIndex(fPrice) VALUES(20);
> INSERT INTO fIndex(fPrice) VALUES(21);
> 
> I would be interested in as why the following doesnt work.
> 
> INSERT INTO fIndex(fPrice) VALUES(20), (21);

See http://www.1keydata.com/sql/sqlinsert.html I believe your statement
is incorrect. You could also try using EXPLAIN.

> 
> I know something that is possibly similar in nature being in the
> Unsupported SQL features.
> 
> *quote* Nested transactions.    The current implementation only allows
> a single active transaction. */quote*
> 
> I am doing a database conversion, and I am trying to limit the amount
> of code I have to type out. Any help would be greatly appreciated.
> 
> Thanks,
> 
> -- 
> Jarvis J. Stubblefield
> Vortex Revolutions
> P.O. Box 716
> White House, TN 37188
> (C) 615.972.5415
> (E) [EMAIL PROTECTED]
> Website: http://www.vortexrevolutions.com/
> plain text document attachment (MDBtoSQLite.vbs)
> Option Explicit
> Const dbUseJet = 2
> 
> 'dao datatypes
> Const dbBoolean    = 1   
> Const dbByte       = 2   
> Const dbInteger    = 3   
> Const dbLong       = 4   
> Const dbCurrency   = 5   
> Const dbSingle     = 6   
> Const dbDouble     = 7   
> Const dbDate       = 8   
> Const dbBinary     = 9   
> Const dbText       = 10  
> Const dbLongBinary = 11   
> Const dbMemo       = 12  
> Const dbGUID       = 15  
> Const dbBigInt     = 16  
> Const dbVarBinary  = 17  
> Const dbChar       = 18  
> Const dbNumeric    = 19  
> Const dbDecimal    = 20  
> Const dbFloat      = 21  
> Const dbTime       = 22  
> Const dbTimeStamp  = 23  
> 
> Dim sql_keywords1, sql_keywords2
> 
> Private Function pad(ByVal valor,ByVal longitud)
>     dim ret
>     ret="" & valor
>     while len(ret)<longitud
>         ret="0" & ret
>     wend
>     pad=ret
> End Function
> 
> Private Function fechaCadena(ByVal valor)
>     dim ret
>     'WScript.Echo "fechaCadena",valor
>     ret=pad(year(valor),4) & "-" & pad(month(valor),2) & "-" & 
> pad(day(valor),2)
>     ret=ret & " " & pad(hour(valor),2) & ":" & pad(minute(valor),2) & ":" & 
> pad(second(valor),2)
>     fechaCadena = ret
> End Function
> 
> Private Function isSQLiteKeyword(ByVal fieldname ) 
>     
>     Dim ucase_fieldname 
>     Dim reservada 
> 
>     ucase_fieldname = UCase(fieldname)
>     isSQLiteKeyword = False
>     For each reservada in sql_keywords1
>         If ucase_fieldname = reservada Then
>             isSQLiteKeyword = True
>             Exit Function
>         End If
>     Next 
>     For each reservada in sql_keywords2
>         If ucase_fieldname = reservada Then
>             isSQLiteKeyword = True
>             Exit Function
>         End If
>     Next 
> End Function
> 
> Private Function sql_name(ByVal name )
>     If isSQLiteKeyword(name) Or InStr(name, " ") > 0 Then
>         sql_name = "[" & name & "]"
>     Else
>         sql_name = name
>     End If
> End Function
> 
> Function getSQLiteFieldType(db_field , errtype )
>     Select Case db_field.Type
>         Case dbBoolean 'Yes/No
>             getSQLiteFieldType = "BOOLEAN"
>         Case dbByte, dbInteger,dbSingle, dbDouble,dbLong
>             getSQLiteFieldType = "INTEGER"
>         Case dbNumeric, dbBigInt
>             getSQLiteFieldType = "NUMBER"
>         Case dbDecimal
>             getSQLiteFieldType = "NUMBER(" & db_field.Size & ")"
>         
>         Case dbGUID 
>             getSQLiteFieldType = "VARCHAR2"
>         
>         Case dbFloat
>             getSQLiteFieldType = "FLOAT"
>         Case dbCurrency
>             getSQLiteFieldType = "NUMBER(32,2)"
>         Case dbDate, dbTime, dbTimeStamp
>             getSQLiteFieldType = "DATE"
>         Case dbText
>             getSQLiteFieldType = "VARCHAR2(" & db_field.Size & ")"
>         Case dbMemo
>             getSQLiteFieldType = "TEXT"
>         Case dbChar
>             getSQLiteFieldType = "CHAR2(" & db_field.Size & ")"
>             
>         Case dbBinary, dbVarBinary, dbLongBinary
>             If errtype Then
>                 getSQLiteFieldType = "-- error: Field " & db_field.name & " 
> in table " & db_field.SourceTable & " has field type " & db_field.Type _
>                 & ". Type has been defined as BINARY, and it's data set NULL."
>             Else
>                 getSQLiteFieldType = "BINARY" 'yet unsupported
>             End If
>         Case Else 'dont know this one
>             if errtype Then
>                 getSQLiteFieldType = "-- error: Field " & db_field.name & " 
> in table " & db_field.SourceTable & " has field type " & db_field.Type _
>                 & ". Type is UNKNOWN, set to BINARY, and it's data set NULL."
>             Else
>                 getSQLiteFieldType = "BINARY" 'yet unsupported
>             End If
>     End Select 
> End Function
> 
> Private Sub exportDatabaseTable(ByRef db , tabla , ts )
>     
>     Dim rcrdSet 
>     Dim print_string
>     Dim columna
>     Dim field_type 
>     dim v
>     
>     Set rcrdSet = db.OpenRecordset("SELECT * FROM " & tabla.name)
>     WScript.Echo "Datos"
>     While (Not rcrdSet.EOF)
>         print_string = "INSERT INTO " & tabla.name & " VALUES ("
>         
>         For each columna in rcrdSet.Fields
>             field_type = getSQLiteFieldType(columna,False)
>             
>             If (InStr(1, field_type, "VARCHAR2") <> 0 Or field_type = "TEXT" 
> ) Then
>                 v=columna.Value
>                 If Not IsNull(v) Then
>                     v=replace(v, "'", "''")
>                     v=replace(v, chr(10), "'||chr(10)||'")
>                     v=replace(v, chr(11), "'||chr(11)||'")
>                     v=replace(v, chr(12), "'||chr(12)||'")
>                     v=replace(v, chr(13), "'||chr(13)||'")
>                     v=replace(v, chr(9), "'||chr(9)||'")
>                     
>                     print_string = print_string & "'" & v & "', "
>                 Else
>                     print_string = print_string & "NULL, "
>                 End If
>             ElseIf field_type = "DATE" Then
>                 v=columna.Value
>                 if isnull(v) then
>                     print_string = print_string & "NULL, "
>                 else
>                     print_string = print_string & "TO_DATE('"& fechaCadena(v) 
> & "', 'YYYY-MM-DD HH24:MI:SS'), "
>                 End If
>             ElseIf (field_type = "BOOLEAN") Then
>                 If (columna.Value = True) Then
>                     print_string = print_string & "1, "
>                 Else
>                     print_string = print_string & "0, "
>                 End If
>             Else
>                 If (field_type = "BINARY" Or IsNull(columna.Value)) Then
>                     'print_string = print_string & "NULL, "
>                 Else
>                     Dim strval 
>                     strval = CStr(columna.Value)
>                     If Left(strval, 1) = "." Then strval = "0" & strval
>                     print_string = print_string & strval & ", "
>                 End If
>             End If
>         Next 
>          
>         print_string = Mid(print_string, 1, Len(print_string) - 2)
>         print_string = print_string & ");"
>         on error resume next
>         ts.writeline print_string
>         if err then
>             WScript.Echo print_string 
>             WScript.Echo len(print_string)
>             err.clear
>         end if
>         rcrdSet.MoveNext
>         
>     Wend
>     
>     rcrdSet.Close
>     
> End Sub
> private sub exportaReferencias(db,ts)
>     dim ret
>     dim ref
>     dim columna
>     for each ref in db.relations
>         ts.write "alter table " & ref.foreigntable & " add constraint fk_" & 
> ref.foreigntable & "_" & ref.table & "foreign key(" 
>         ret=""
>     
>         for each columna in ref.fields
>             ret= ret & "," & columna.name
>         next
>         ts.write mid(ret,2)
>         ts.writeline ")references " & ref.table & 
> colsClave(db.tabledefs(ref.table)) & ";"
>     next
> end sub
> private function colsClave(tabla)
>     dim clave
>     dim print_string
>     dim col
>     
>     set clave=tabla.indexes("PrimaryKey")
>     print_string=""
>     for each col in clave.fields
>         print_string =  print_string & "," & col.name 
>     next 
>     'WScript.Echo print_string 
>     
>     colsClave="(" & mid(print_string ,2) & ")"
> 
> end function
> 
> Private Sub exportDatabase(ByVal database_path , ByVal username , ByVal 
> password , _
>                            ByVal outfile )
>     Dim fso,ts
>     Dim print_string
>     Dim db 
>     Dim tabla, columna
>     Dim wrkJet 
>     Dim table_name 
>     Dim table_sql_name 
>     Dim field_name 
>     Dim field_sql_name 
>     Dim field_type 
>     dim dbEng
>     dim col
>     dim ref
>     
>     ' Create Microsoft Jet Workspace object.
>     set dbEng=createobject("DAO.DBEngine.36")
>     Set wrkJet = dbEng.CreateWorkspace("", username, password, dbUseJet)
> 
>     Set db = wrkJet.OpenDatabase(database_path, , True)
>     
>     If (outfile = "") Then outfile = "sqlite_db_out.sql"
>     Set fso = CreateObject("Scripting.FileSystemObject")
>     Set ts = fso.CreateTextFile(outfile, True)
>     
>     ts.writeline "SET DEFINE OFF;" 'Así no fastidian los caracteres &
>     For each tabla in db.TableDefs
>         table_name = tabla.name
>         table_sql_name = sql_name(table_name)
>         If Left(table_name, 4) <> "MSys" Then
>             WScript.Echo tabla.name
>             ts.writeline "DROP TABLE " & table_sql_name & ";"
>             ts.writeline "COMMIT;"
>             print_string = "CREATE TABLE " & table_sql_name & " ( "
>             For each columna in tabla.Fields
>                 field_name = columna.name
>                 field_sql_name = sql_name(field_name)
>                 field_type = getSQLiteFieldType(columna, False)
>                 if field_type <> "BINARY" then
>                     print_string = print_string & field_sql_name & " "
>                     print_string = print_string & field_type 
>                     if columna.required then
>                         print_string = print_string & " NOT NULL"
>                     end if
>                     print_string = print_string & ", "
>                 end if
>             Next 
>             ts.writeline print_string
>             ts.write " primary key "
>             ts.write colsClave(tabla)
>             ts.writeline ");"
>             
>             For each columna in tabla.Fields
>                 field_type = getSQLiteFieldType(columna, False)
>                 If InStr(field_type, "-- error") = 1 Then
>                     ts.writeline  field_type 
>                 End If
>             Next 
>             
>             Call exportDatabaseTable(db, tabla, ts)
>         End If
>     Next 
>     
>     exportaReferencias db,ts
> 
>     ts.writeline "QUIT;" 'Si no, se queda
>     ts.close
>     
>     db.Close
>     wrkJet.Close
>     Exit Sub
>     
> DB_Error:
>     MsgBox "Could not open database " & database_path & ". Check the path and 
> permissions."
>         
> End Sub
> 
> Public Sub Main(mdb_db)
>     
>     Dim outfile
>     'keywords i took from sqlite/tokenizer.c
>     sql_keywords1 = Array( _
>         "ABORT", "AFTER", "ALL", "AND", "AS", "ASC", "ATTACH", _
>         "BEFORE", "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE", _
>         "CHECK", "CLUSTER", "COLLATE", "COMMIT", "CONFLICT", _
>         "CONSTRAINT", "COPY", "CREATE", "CROSS", "DATABASE", _
>         "DEFAULT", "DEFERRED", "DEFERRABLE", "DELETE", _
>         "DELIMITERS", "DESC", "DETACH", "DISTINCT", "DROP", _
>         "END", "EACH", "ELSE", "EXCEPT", "EXPLAIN", "FAIL", _
>         "FOR", "FOREIGN", "FROM", "FULL", "GLOB", "GROUP" _
>         )
>     sql_keywords2 = Array( _
>         "HAVING", "IGNORE", "IMMEDIATE", "IN", "INDEX", _
>         "INITIALLY", "INNER", "INSERT", "INSTEAD", "INTERSECT", _
>         "INTO", "IS", "ISNULL", "JOIN", "KEY", "LEFT", "LIKE", _
>         "LIMIT", "MATCH", "NATURAL", "NOT", "NOTNULL", "NULL", _
>         "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PRAGMA", _
>         "PRIMARY", "RAISE", "REFERENCES", "REPLACE", "RESTRICT", _
>         "RIGHT", "ROLLBACK", "ROW", _
>         "SELECT", "SET", "STATEMENT", "TABLE", "TEMP", _
>         "TEMPORARY", "THEN", "TRANSACTION", "TRIGGER", _
>         "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", _
>         "VALUES", "VIEW", "WHEN", "WHERE" _
>         )
> 
>     
>     If Right(mdb_db, 4) <> ".mdb" Then
>         outfile = mdb_db & ".sql"
>     Else
>         outfile = Replace(mdb_db, ".mdb", ".sql")
>     End If
>     
>     Call exportDatabase(mdb_db, "admin", "", outfile)
> 
> End Sub
> 
> main "lienzoSinSorolla.mdb"
-- 
G. Roderick Singleton <[EMAIL PROTECTED]>
PATH tech

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to