Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL][MySQL]Przekonwertowanie zapytania mysql na postgressql
Forum PHP.pl > Forum > Przedszkole
yafu
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 ?
poli25
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;
yafu
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 ?
mmmmmmm
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
poli25
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
yafu
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 ?
mmmmmmm
RTFM albo wyklikaj sobie, a nie że z każdą duperelą na forum lecisz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.