Avatar billede cbadk Novice
13. marts 2006 - 22:46 Der er 8 kommentarer og
2 løsninger

Koveteringsprogram fra ACCESS til MYSQL

Hejsa

I kender det sikkert godt. Man har siddet og leget med access og asp. Og lige pludseligt er det alvor og ens side er blevet lidt for stor til access kan håndtere mange brugere. Derfor ville jeg gerne konvertere til mysql. Men så var mit problem at jeg lige pludseligt havde nogle sql strenge der ikke længere var gyldige til netop mysql.

Har i et forslag til et program der hurtigt kan fixe sådan et problem eller har et andet forslag?

Er lidt surt at skulle til og kigge 2100 filer igennem for sql fejl pga. skift til MySql...måske ville det være nemmere at skifte til MS SQL i stedet for.
Avatar billede fennec Nybegynder
14. marts 2006 - 08:23 #1
Mig bekendt findes der ikke et sådan program. ?'et har været oppe før herinde, og det er altid endt på den besværlige måde.

Hvis du ikke fra start har forberedt dine sql-sætninger på et DB skift, må du igennem alle sider manuelt :(

Hvis det endelig skal være, så er Access og MS-SQL tættere på hinanden, så flere af fejlene vil "lave" sig selv, hvis du skifter til MS-SQL i stedet. Du vil dog stadig have problemer med datoer, da det er her Access skilder sig ud fra alle andre DB'er.
Avatar billede hansen Nybegynder
14. marts 2006 - 08:34 #2
En lille søgning på Google:
http://www.google.dk/search?sourceid=navclient&hl=da&ie=UTF-8&rls=GGLG,GGLG:2005-45,GGLG:da&q=convert+ACCESS+to+MYSQL
Avatar billede hansen Nybegynder
14. marts 2006 - 08:35 #3
Glem det, jeg havde ikke læst spørgsmålet godt nok, sorry
Avatar billede ffsoft Praktikant
14. marts 2006 - 09:14 #4
Det er ikke så slemt, det handler mest om datoer hvor Access jo vil have #mm-dd-yyyy# og mySQL vil have 'yyyy-mm-dd'. Om du har 10 eller 100 sider er lige meget
når du først har lokaliseret problemerne og fundet en løsning, kan du bruge
søg og erstat på hele sitet. Hvis du skifter til MSSQL vil du osse få problemer.
Jeg er ved at lave noget materiale til ASP og databaser og der vil man kunne
læse om forskellen på Access og mySQL, jeg er desværre ikke nået så langt endnu:

http://www.ffsoft.dk/ASP_UV/docs/dbUV0101.pdf

men hvis du kan vente, kommer der mere.
Avatar billede Slettet bruger
14. marts 2006 - 10:57 #5
Der findes altså et par programmer, som automatisk kan gøre det du ønsker. :-)
Se her: http://www.google.dk/search?hl=da&q=access2mysql&btnG=Google-s%C3%B8gning&meta=
Avatar billede fennec Nybegynder
14. marts 2006 - 11:49 #6
extend >>
Det du linker til (og som hansen også gjorde) er programmer, som kan importere Access i MySQL, og det er ikke det der er problemet her. Problemet er at de SQL-sætninger i ASP filerne ikke dur sammen med MySQL, fordi der er "Access only" kode heri.

cbadk >>
Det du søger er et program, som søger alle dine ASP filer igennem og ændre:
select top 10 * from enTabel where dato=#12-31-2006#

til:
select * from enTabel where dato='2006-12-31' limit 10

Og et sådanne program findes ikke, og jeg tror ikke engang det kan laves, for ofte har du vel variabler med i SQL'en:

dato = "12-31-2006"
conn.execute("select * from enTabel where dato=#"& dato &"#")

Så skal programmet ændre datoen i varablen, så den har det rigtige format, og hvordan skulle den vide det :o)

Du må altså bide i det sure æble, og gå alle dine sider igennem...

Men se det positive i det. Du er nu blevet opmærksom på cross-DB problematikken, og vil nu opdage hvordan man laver sql-sætninger, der fungere i alle DB'er ved rigtig opbygning og ASP funktioner. Du kan få min datofunktion her, så er du kommet lidt af vejen :o)

Function ConvertToSqlDate(dato)
dim SQLYear,SQLMonth,SQLDay
  SQLYear = Year(dato)
  SQLMonth = Month(dato)
  SQLDay = Day(dato)
  SQLDay = rigth("0"& SQLDay,2)
  SQLMonth = rigth("0"& SQLMonth,2)
  ConvertToSqlDate = "#"& SQLMonth &"-"& SQLDay &"-"& SQLYear &"#"
' ConvertToSqlDate = "'"& SQLYear & SQLMonth & SQLDay &"'"
' ConvertToSqlDate = "'"& SQLYear &"-"& SQLMonth &"-"& SQLDay &"'"
End Function

Læg mærke til at # og ' er med i funktionen, så skifter jeg DB, ændre jeg bare funktionen også bliver alle mine datoer konverteret til det rigtige format samt rigtig "omkransning"

.o) <-- One Eyed Jack
Avatar billede ffsoft Praktikant
14. marts 2006 - 12:10 #7
Du kunne jo udvide din funktion til at det var muligt at
overføre en parameter mere og ud fra den afgøre hvilket
datoformat det skulle være.

Function ConvertToSqlDate(dato,type)

..............

if type = "us" then
ConvertToSqlDate = "#"& SQLMonth &"-"& SQLDay &"-"& SQLYear &"#"

.....................
Avatar billede fennec Nybegynder
14. marts 2006 - 12:29 #8
Så skal du jo stadig ind og ændre alle steder du kalder funktionen, når man skifter DB.
Der har jeg det til at ligge i en configfil i stedet, men der var jo ingen grund til at gøre det for indviklet :o)

Men her er min rigtige slutning:
  if ConstDateFormat = 1 then
    ConvertToSqlDate = ConstDateDele & SQLMonth&"-"&SQLDay&"-"&SQLYear & ConstDateDele
  elseif ConstDateFormat = 2 then
    ConvertToSqlDate = ConstDateDele & SQLYear&SQLMonth&SQLDay & ConstDateDele
  else
    ConvertToSqlDate = ConstDateDele & SQLYear&SQLMonth&SQLDay & ConstDateDele
  end if

ConstDateFormat og ConstDateDele bliver begge sat i min configfil. At det ikke kun er EN parameter, der bestemmer databaseen og dermed omkrandsning og format er helt bevidst...
Avatar billede ffsoft Praktikant
14. marts 2006 - 14:51 #9
Cool. ;0)
Avatar billede cbadk Novice
20. marts 2006 - 02:46 #10
Hmmm...fantastisk godt tænkt.

Mange tak for scriptet.

/cbadk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester