Avatar billede jacand Nybegynder
26. juli 2005 - 13:33 Der er 11 kommentarer og
1 løsning

Fra MSSQL til MYSQL

Jeg er ved at flytte min database fra MSSQL til MYSQL og har brugt mssql2mysql til formålet.
Jeg er dog løbet ind i at alle mine kolonner med BIT der blevet til tinyint og alle 1 (true) der lavet om til -1
Er der en let måde at få lavet alle de -1 om til 1 igen?
Avatar billede arne_v Ekspert
26. juli 2005 - 13:36 #1
UPDATE tabel SET felt=1 WHERE felt=-1

måske
Avatar billede arne_v Ekspert
26. juli 2005 - 13:37 #2
det er iøvrigt ikke nødvendigvis nogen ulogisk konvertering

specielt ikke hvis du programmerer i C/C++
Avatar billede jacand Nybegynder
26. juli 2005 - 13:41 #3
der er ikke en letter måde end, UPDATE tabel SET felt=1 WHERE felt=-1.
Jeg tænkte på om man ikke kunne lave noget alla søg og erstat på hele tabellen.
Jeg bruger den til en asp side som nu helst vil have den hedder 1, jeg synes nu heller ikke der er så logist at true skal hedde -1 :-)
Avatar billede arne_v Ekspert
26. juli 2005 - 13:47 #4
du kunne godt lave en stored procedure som itererede over alle
tabeller og alle felter

men medmindre du har rigtigt mange tabeller og felter så er det nok hurtigere
med nogle manuelle UPDATE's
Avatar billede arne_v Ekspert
26. juli 2005 - 13:51 #5
jeg vrøvler - du er jo flyttet fra MS SQL til MySQL og MySQL har ikke stored procedure

men det kan selvfølgelig laves i PHP/ASP/Java/C#/whatever
Avatar billede jacand Nybegynder
26. juli 2005 - 14:03 #6
Hmm jeg har rimelig mange tabeller med -1 men jeg må jo bare igen med UPDATE tabel SET felt=1 WHERE felt=-1 :-)
Avatar billede arne_v Ekspert
26. juli 2005 - 14:07 #7
hvis du fortæller mig hvilket programmerings sprog du kan bruge, så kan jeg godt
bixe noget kode (men dog først senere idag)
Avatar billede jacand Nybegynder
26. juli 2005 - 14:22 #8
Jeg bruger asp
Avatar billede arne_v Ekspert
27. juli 2005 - 10:06 #9
Den her kode outputter alle tables og columns i en database:

<%
Set con1 = Server.CreateObject("ADODB.Connection")
con1.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Option=16834;Database=Test;"
Set con2 = Server.CreateObject("ADODB.Connection")
con2.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Option=16834;Database=Test;"
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.Open "SHOW TABLES",con1
Response.Write "<ul>" & vbCrLf
Do While Not rs1.EOF
  Response.Write "<li>" & rs1(0) & vbCrLf
  Set rs2 = Server.CreateObject("ADODB.Recordset")
  rs2.Open "SHOW COLUMNS FROM " & rs1(0),con2
  Response.Write "<ul>" & vbCrLf
  Do While Not rs2.EOF
      Response.Write "<li>" & rs2("Field") & " " & rs2("Type") & vbCrLf
      rs2.MoveNext
  Loop
  Response.Write "</ul>" & vbCrLf
  rs1.MoveNext
Loop
Response.Write "</ul>" & vbCrLf
Set rs1 = Nothing
Set con2 = Nothing
Set con1 = Nothing
%>

det burde være nemt at rette den så den tester på typen og hvis det er en TINYINT
så fyrer den en UPDATE af
Avatar billede arne_v Ekspert
27. juli 2005 - 10:07 #10
(husk dog at du skal have en 3. connection til det !)
Avatar billede jacand Nybegynder
27. juli 2005 - 10:28 #11
Jeg prøver lige at rettte koden til i løbet af dagen, jeg kan sakkens se ideen med koden.

Tak for hjælpen.

Smider du lige et svar.
Avatar billede arne_v Ekspert
27. juli 2005 - 10:29 #12
kommer her
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
Computerworld tilbyder specialiserede kurser i database-management

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