Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PostgreSQL][MySQL]Przekonwertowanie zapytania mysql na postgressql
yafu
post 24.06.2013, 11:08:04
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 1.06.2013

Ostrzeżenie: (0%)
-----


Witam,

Mam taki kod mysql:

  1. -- MySQL dump 10.13 Distrib 5.1.69, for debian-linux-gnu (x86_64)
  2. --
  3. -- Host: localhost Database: alx
  4. -- ------------------------------------------------------
  5. -- Server version 5.1.69-0ubuntu0.10.04.1
  6.  
  7. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  8. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  9. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  10. /*!40101 SET NAMES utf8 */;
  11. /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
  12. /*!40103 SET TIME_ZONE='+00:00' */;
  13. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
  14. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  15. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  16. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  17.  
  18. --
  19. -- Table structure for table `ended`
  20. --
  21.  
  22. DROP TABLE IF EXISTS `ended`;
  23. /*!40101 SET @saved_cs_client = @@character_set_client */;
  24. /*!40101 SET character_set_client = utf8 */;
  25. CREATE TABLE `ended` (
  26. `item` varchar(16) COLLATE utf8_polish_ci NOT NULL,
  27. `it-name` varchar(128) CHARACTER SET ucs2 COLLATE ucs2_polish_ci NOT NULL,
  28. UNIQUE KEY `item` (`item`)
  29. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  30. /*!40101 SET character_set_client = @saved_cs_client */;
  31.  
  32. --
  33. -- Dumping data for table `ended`
  34. --
  35.  
  36. LOCK TABLES `ended` WRITE;
  37. /*!40000 ALTER TABLE `ended` DISABLE KEYS */;
  38. /*!40000 ALTER TABLE `ended` ENABLE KEYS */;
  39. UNLOCK TABLES;
  40. /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
  41.  
  42. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
  43. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
  44. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
  45. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  46. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  47. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  48. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


Tak naprawdę to nie chce mi stworzyć tabeli:

CREATE TABLE `ended` (
`item` varchar(16) COLLATE utf8_polish_ci NOT NULL,
`it-name` varchar(128) CHARACTER SET ucs2 COLLATE ucs2_polish_ci NOT NULL,
UNIQUE KEY `item` (`item`)
)

Co robię nie tak, czy ktoś może mi pomóc ?
Go to the top of the page
+Quote Post
poli25
post 24.06.2013, 11:26:14
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

Ostrzeżenie: (0%)
-----


wpisz

CREATE TABLE ended (
item char(16) NOT NULL,
it_name char(128) NOT NULL)

najpierw opanuj postgresql nie ma varchar w postgresql a char


żeby zobaczyć jak poprawnie budować w postgresql używaj pgadmina
wink.gif

CREATE TABLE ended
(
item character(16) NOT NULL,
it_name character(128) NOT NULL,
id serial NOT NULL,
CONSTRAINT id PRIMARY KEY (item)
)
WITH (
OIDS=TRUE
);
ALTER TABLE ended OWNER TO postgres;

Ten post edytował poli25 24.06.2013, 11:35:23
Go to the top of the page
+Quote Post
yafu
post 24.06.2013, 11:40:31
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 1.06.2013

Ostrzeżenie: (0%)
-----


Właśnie używam pgadmina, tylko on jest jakiś dziwny, jak chce wpisać zapytanie sql to on do wszystkiego dodaje mi Selecta, czyli jak wpisuje CREATE TABLE ended to wywala mi:

Błąd SQL:

ERROR: syntax error at or near "CREATE"
LINE 1: SELECT COUNT(*) AS total FROM (CREATE TABLE ended (
^

W poleceniu:
SELECT COUNT(*) AS total FROM (CREATE TABLE ended (
item char(16) NOT NULL,
it_name char(128) NOT NULL)) AS sub

Jak zrobić, żeby tego nie dodawał ?
W tym momencie obchodzę to zapisując kod sql do pliku i wczytując go w pgadminie, ale to uciążliwe jest...


PS Co znaczy ta część:
  1. WITH (
  2. OIDS=TRUE
  3. );
  4. ALTER TABLE ended OWNER TO postgres;


Czy bez tego się nie obejdzie ?

Ten post edytował yafu 24.06.2013, 11:41:53
Go to the top of the page
+Quote Post
mmmmmmm
post 24.06.2013, 11:51:44
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


OIDS to wewnętrzny Object ID. Już nieużywany. Gdybyś miał jakąś bardzo bardzo starą bazę postgreSQL i na niej zapisane zapytania, to one mogłyby z tego korzystać. Dlatego dla zgodności w dól pozostawiono do wyboru z IODS lub bez niego. Domyślnie jest FALSE, więc albo coś skopałeś w konfiguracji, albo zaznaczyłeś "Jest IOD". W poleceniu CREATE nie musi być.
Podobnie nie musi być przypisania właściciela (domyślnie będzie nim tworzący) - mam nadzieję, że nie logujesz się na postgres...
A mnie pgAdmin nie dodaje żadnych Countów
Go to the top of the page
+Quote Post
poli25
post 24.06.2013, 14:15:23
Post #5





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

Ostrzeżenie: (0%)
-----


Cytat(yafu @ 24.06.2013, 12:40:31 ) *
SELECT COUNT(*) AS total FROM (CREATE TABLE ended (

po co Ci to ? co chcesz liczyc ?

masz gotowy skrypt w ktorym php utworzy Ci tabele

  1. <?php
  2.  
  3. $connect=pg_connect("host=127.0.0.1 dbname=moja_baza user=postgres password=postgres");
  4.  
  5.  
  6. $query=pg_query("CREATE TABLE started (
  7. item char(16) NOT NULL,
  8. it_name char(128) NOT NULL)");
  9.  
  10.  
  11.  
  12. ?>



pozdro

Ten post edytował poli25 24.06.2013, 14:16:00
Go to the top of the page
+Quote Post
yafu
post 24.06.2013, 17:01:52
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 1.06.2013

Ostrzeżenie: (0%)
-----


Nic nie chce liczyć, chce po prostu wykonywać zapytania sql z poziomu pgadmina (tak jak z phpmyadmina w mysql), ale tutaj nie mogę nic zrobić bo do każdego zapytania dodaje mi na początku "SELECT COUNT(*) AS total FROM". Dlaczego tak jest ?

A co jest zamiast typu int w postgres, bo przy nadaniu int(3) wywala mi błąd ?

Ten post edytował yafu 24.06.2013, 17:08:42
Go to the top of the page
+Quote Post
mmmmmmm
post 24.06.2013, 21:15:40
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


RTFM albo wyklikaj sobie, a nie że z każdą duperelą na forum lecisz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 17:21