Updatetje...
Oude tabelstructuur:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| CREATE TABLE `Artikelen` (
`Artikelnummer` DOUBLE NULL,
`Fotonaam` VARCHAR(255),
`Categorie` VARCHAR(255),
`Subcategorie` VARCHAR(255),
`Naam` VARCHAR(255),
`Prijs` DOUBLE NULL,
`Per_aantal` VARCHAR(255),
`Omschrijving` VARCHAR(255),
`Foto_picto` VARCHAR(255),
`Datum` DATETIME,
`Id` INTEGER NOT NULL AUTO_INCREMENT,
INDEX (`Id`),
PRIMARY KEY (`Id`)
) ENGINE=myisam DEFAULT CHARSET=utf8; |
Nieuwe tabelstructuur:
Categories
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| CREATE TABLE IF NOT EXISTS `r69lt_virtuemart_categories` (
`virtuemart_category_id` mediumint(1) unsigned NOT NULL AUTO_INCREMENT,
`virtuemart_vendor_id` smallint(1) unsigned NOT NULL DEFAULT '1',
`category_template` char(128) DEFAULT NULL,
`category_layout` char(64) DEFAULT NULL,
`category_product_layout` char(64) DEFAULT NULL,
`products_per_row` tinyint(2) DEFAULT NULL,
`limit_list_step` char(32) DEFAULT NULL,
`limit_list_initial` smallint(1) unsigned DEFAULT NULL,
`hits` int(1) unsigned NOT NULL DEFAULT '0',
`metarobot` char(40) NOT NULL DEFAULT '',
`metaauthor` char(64) NOT NULL DEFAULT '',
`ordering` int(2) NOT NULL DEFAULT '0',
`shared` tinyint(1) NOT NULL DEFAULT '0',
`published` tinyint(1) NOT NULL DEFAULT '1',
`created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` int(11) NOT NULL DEFAULT '0',
`modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified_by` int(11) NOT NULL DEFAULT '0',
`locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`locked_by` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`virtuemart_category_id`),
KEY `idx_category_virtuemart_vendor_id` (`virtuemart_vendor_id`),
KEY `i_published` (`published`),
KEY `i_shared` (`shared`),
KEY `i_ordering` (`ordering`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Product Categories are stored here' AUTO_INCREMENT=2 ; |
Products
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| CREATE TABLE IF NOT EXISTS `r69lt_virtuemart_products` (
`virtuemart_product_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`virtuemart_vendor_id` smallint(1) unsigned NOT NULL DEFAULT '1',
`product_parent_id` int(1) unsigned NOT NULL DEFAULT '0',
`product_sku` char(64) DEFAULT NULL,
`product_gtin` char(64) DEFAULT NULL,
`product_mpn` char(64) DEFAULT NULL,
`product_weight` decimal(10,4) DEFAULT NULL,
`product_weight_uom` char(7) DEFAULT NULL,
`product_length` decimal(10,4) DEFAULT NULL,
`product_width` decimal(10,4) DEFAULT NULL,
`product_height` decimal(10,4) DEFAULT NULL,
`product_lwh_uom` char(7) DEFAULT NULL,
`product_url` char(255) DEFAULT NULL,
`product_in_stock` int(1) NOT NULL DEFAULT '0',
`product_ordered` int(1) NOT NULL DEFAULT '0',
`low_stock_notification` int(1) unsigned NOT NULL DEFAULT '0',
`product_available_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`product_availability` char(32) DEFAULT NULL,
`product_special` tinyint(1) DEFAULT NULL,
`product_sales` int(1) unsigned NOT NULL DEFAULT '0',
`product_unit` varchar(8) DEFAULT NULL,
`product_packaging` decimal(8,4) unsigned DEFAULT NULL,
`product_params` varchar(2000) DEFAULT NULL,
`hits` int(11) unsigned DEFAULT NULL,
`intnotes` varchar(18000) DEFAULT NULL,
`metarobot` varchar(400) DEFAULT NULL,
`metaauthor` varchar(400) DEFAULT NULL,
`layout` char(16) DEFAULT NULL,
`published` tinyint(1) DEFAULT NULL,
`pordering` mediumint(2) unsigned NOT NULL DEFAULT '0',
`created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_by` int(11) NOT NULL DEFAULT '0',
`modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified_by` int(11) NOT NULL DEFAULT '0',
`locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`locked_by` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`virtuemart_product_id`),
KEY `idx_product_virtuemart_vendor_id` (`virtuemart_vendor_id`),
KEY `idx_product_product_parent_id` (`product_parent_id`),
KEY `i_product_special` (`product_special`),
KEY `i_published` (`published`),
KEY `i_pordering` (`pordering`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='All products are stored here.' AUTO_INCREMENT=4 ; |
Products (taal, hier worden naam, beschrijving, etc. in gegeven, zodat het per taal kan verschillen)
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| CREATE TABLE IF NOT EXISTS `r69lt_virtuemart_products_en_gb` (
`virtuemart_product_id` int(1) unsigned NOT NULL,
`product_s_desc` varchar(2000) NOT NULL DEFAULT '',
`product_desc` varchar(18400) NOT NULL DEFAULT '',
`product_name` char(180) NOT NULL DEFAULT '',
`metadesc` varchar(400) NOT NULL DEFAULT '',
`metakey` varchar(400) NOT NULL DEFAULT '',
`customtitle` char(255) NOT NULL DEFAULT '',
`slug` char(192) NOT NULL DEFAULT '',
PRIMARY KEY (`virtuemart_product_id`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
Products en Categories, hier wordt alles aan elkaar gelinkt
SQL:
1
2
3
4
5
6
7
8
9
| CREATE TABLE IF NOT EXISTS `r69lt_virtuemart_product_categories` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`virtuemart_product_id` int(1) unsigned NOT NULL DEFAULT '0',
`virtuemart_category_id` mediumint(1) unsigned NOT NULL DEFAULT '0',
`ordering` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `i_virtuemart_product_id` (`virtuemart_product_id`,`virtuemart_category_id`),
KEY `i_ordering` (`ordering`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Maps Products to Categories' AUTO_INCREMENT=4 ; |
Door (vooral) Incaz zijn verhaal is het me heel wat duidelijker hoe de structuur in elkaar zit, en zeker ook het feit dat je ID's meegeeft, zodat je heel simpel dingen kunt veranderen zonder dat je het meerdere keren hoeft te doen, dank hiervoor.
Na wat denken ben ik er dus achter gekomen, dat ik het beste beide databasetabellen kan laten invoeren in de database (De virtuemart is al in een DB, de oude is in feite nog alleen maar een SQL query, vanaf een Microsoft Database bestand geconverteerd) en dan via bepaalde select commands zoals hierboven is aangegeven ik dan de juiste dingen op de juiste plek kan zetten?
P_Tingen schreef op donderdag 10 juli 2014 @ 08:12:
Ik zou het idd ook handmatig doen. Ofwel zoals incaz zegt via de db zelf en anders door de gegevens als csv te downloaden en in Excel te bewerken. Aangezien je niet zo'n grote database hebt is dat met wat edel handwerk nog wel te behappen. Als je de zaken hebt uitgezocht, kun je de nieuwe csv bestanden weer uploaden naar je nieuwe db
Handmatig gaat echt veel te lang duren, zeker ook omdat ik de hele tijd aan het kopieren en plakken ben, en ook nog is zoeken naar de juiste tabel. Liefste doe ik het dus automatisch, anders kan ik het ook via Virtuemart zelf doen, maar dat gaat zo ontzettend langzaam met 3000+ producten.
NMe schreef op woensdag 09 juli 2014 @ 21:04:
[...]
Het goeie forum vinden was blijkbaar ook lastig.
Waar hoort mijn topic?
WEB>>PRG
Wat betreft je vraag: het lijkt me sterk dat er een generiek stuk software is dat de ene database naar de andere kan mappen, niet in de laatste plaats vanwege het feit dat niet elke database perfect in elkaar zal zitten.
Dat betekent niet dat je het niet kan automatiseren, ik zou het alleen niet in pure SQL doen als ik jou was. Kan vast wel, maar eenvoudig wordt dat niet. Mijn eerste keus zou gaan naar het spul uit de oude database inlezen via PHP of een andere client-taal, en het daarna weer inserten in de nieuwe structuur.
Overigens haal je nogal wat termen door elkaar en dat zal het zoeken niet makkelijker maken. Je verwart een paar keer tabellen en databases met elkaar, je hebt het over een "Microsoft database" die je "exporteert naar SQL", etc. Een "Microsoft database" kan onder anderen MS Access of SQL Server zijn, SQL zegt niks omdat het een generieke taal is en geen stuk software die deze taal implementeert (zoals Access, SQL Server, MySQL, PostgreSQL, etc). Kijk dus eerst eens wat je naar wat om wil zetten, dan kom je vast een stuk verder.
Als de oude software trouwens óók een standaardproduct is dan zou het wel eens kunnen dat er conversiescripts bestaan.
Het was een Microsoft Access database. Ik converteer het naar MySQL. Ik gebruik SQL omdat ik eigenlijk altijd met MySQL werk. Vandaar de verkeerde benaming

The Eagle schreef op woensdag 09 juli 2014 @ 21:16:
Wat je zoekt bestaat, en heet een ETL tool: Extract, Transfer and Load

In een dergelijke tool kun je idd de boel mappen, en direct laten exporteren en importeren. Voorwaarde is uiteraard dat je DB client tools wel geinstalleerd zijn
Ik weet niet of er een freeware ETL tool bestaat. Maar dat is wel wat je zoekt, en dan bij voorkeur eentje die jouw DBMS typen snapt

Alternatief is idd zelf mappen. En ja, dat duurt even

Thanks, ik ga even Googlen. Moet wel gratis blijven maar als het niet kan moet het via de database gaan..
[
Voor 19% gewijzigd door
The Great HooD op 12-07-2014 11:53
]